博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.net中将Json包装类 分类: .NET 201...
阅读量:5297 次
发布时间:2019-06-14

本文共 10503 字,大约阅读时间需要 35 分钟。

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Web.UI.WebControls;using System.Web.UI.HtmlControls;using System.Data;using System.Collections;using System.Reflection;using System.Text.RegularExpressions;using System.Runtime.Serialization.Json;using System.IO;using System.Web.Script.Serialization;namespace ConsoleWSTest{    public static class Json    {        ///         /// List转成json        ///         /// 
/// /// ///
public static string ListToJson
(IList
list, string jsonName) { JavaScriptSerializer jss = new JavaScriptSerializer(); try { return jss.Serialize(list); } catch (Exception ex) { throw new Exception("JSONHelper.JSONToObject(): " + ex.Message); } } public static string ObjectToJson(object obj) { System.Web.Script.Serialization.JavaScriptSerializer jss = new System.Web.Script.Serialization.JavaScriptSerializer(); try { return jss.Serialize(obj); } catch (Exception ex) { throw new Exception("JSONHelper.JSONToObject(): " + ex.Message); } } ///
/// 序列化集合对象 /// public static string JsonSerializerByArrayData
(T[] tArray) { DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T[])); MemoryStream ms = new MemoryStream(); ser.WriteObject(ms, tArray); string jsonString = Encoding.UTF8.GetString(ms.ToArray()); ms.Close(); string p = @"\\/Date\((\d+)\+\d+\)\\/"; MatchEvaluator matchEvaluator = new MatchEvaluator(ConvertJsonDateToDateString); Regex reg = new Regex(p); jsonString = reg.Replace(jsonString, matchEvaluator); return jsonString; } ///
/// 序列化单个对象 /// public static string JsonSerializerBySingleData
(T t) { DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T)); MemoryStream ms = new MemoryStream(); ser.WriteObject(ms, t); string jsonString = Encoding.UTF8.GetString(ms.ToArray()); ms.Close(); string p = @"\\/Date\((\d+)\+\d+\)\\/"; MatchEvaluator matchEvaluator = new MatchEvaluator(ConvertJsonDateToDateString); Regex reg = new Regex(p); jsonString = reg.Replace(jsonString, matchEvaluator); return jsonString; } /
/ 反序列化单个对象 / //public static T JsonDeserializeBySingleData
(string jsonString) //{ // //将"yyyy-MM-dd HH:mm:ss"格式的字符串转为"\/Date(1294499956278+0800)\/"格式 // string p = @"\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}"; // MatchEvaluator matchEvaluator = new MatchEvaluator(ConvertDateStringToJsonDate); // Regex reg = new Regex(p); // jsonString = reg.Replace(jsonString, matchEvaluator); // DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T)); // MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)); // T obj = (T)ser.ReadObject(ms); // return obj; //} ///
/// 反序列化集合对象 /// public static T JsonDeserializeByArrayData
(string jsonString) { JavaScriptSerializer jss = new JavaScriptSerializer(); try { return jss.Deserialize
(jsonString); } catch (Exception ex) { throw new Exception("JSONHelper.JSONToObject(): " + ex.Message); } } ///
/// 将Json序列化的时间由/Date(1294499956278+0800)转为字符串 /// private static string ConvertJsonDateToDateString(Match m) { string result = string.Empty; DateTime dt = new DateTime(1970, 1, 1); dt = dt.AddMilliseconds(long.Parse(m.Groups[1].Value)); dt = dt.ToLocalTime(); result = dt.ToString("yyyy-MM-dd HH:mm:ss"); return result; } ///
/// 将时间字符串转为Json时间 /// private static string ConvertDateStringToJsonDate(Match m) { string result = string.Empty; DateTime dt = DateTime.Parse(m.Groups[0].Value); dt = dt.ToUniversalTime(); TimeSpan ts = dt - DateTime.Parse("1970-01-01"); result = string.Format("\\/Date({0}+0800)\\/", ts.TotalMilliseconds); return result; } ///
/// List转成json /// ///
///
///
public static string ListToJson
(IList
list) { object obj = list[0]; return ListToJson
(list, obj.GetType().Name); } ///
/// 对象转换为Json字符串 /// ///
对象 ///
Json字符串
public static string ToJson(object jsonObject) { try { StringBuilder jsonString = new StringBuilder(); jsonString.Append("{"); PropertyInfo[] propertyInfo = jsonObject.GetType().GetProperties(); for (int i = 0; i < propertyInfo.Length; i++) { object objectValue = propertyInfo[i].GetGetMethod().Invoke(jsonObject, null); if (objectValue == null) { continue; } StringBuilder value = new StringBuilder(); if (objectValue is DateTime || objectValue is Guid || objectValue is TimeSpan) { value.Append("\"" + objectValue.ToString() + "\""); } else if (objectValue is string) { value.Append("\"" + objectValue.ToString() + "\""); } else if (objectValue is IEnumerable) { value.Append(ToJson((IEnumerable)objectValue)); } else { value.Append("\"" + objectValue.ToString() + "\""); } jsonString.Append("\"" + propertyInfo[i].Name + "\":" + value + ","); ; } return jsonString.ToString().TrimEnd(',') + "}"; } catch (Exception ex) { throw ex; } } ///
/// 对象集合转换Json /// ///
集合对象 ///
Json字符串
public static string ToJson(IEnumerable array) { string jsonString = "["; foreach (object item in array) { jsonString += ToJson(item) + ","; } if (jsonString.Length > 1) { jsonString.Remove(jsonString.Length - 1, jsonString.Length); } else { jsonString = "[]"; } return jsonString + "]"; } ///
/// 普通集合转换Json /// ///
集合对象 ///
Json字符串
public static string ToArrayString(IEnumerable array) { string jsonString = "["; foreach (object item in array) { jsonString = ToJson(item.ToString()) + ","; } jsonString.Remove(jsonString.Length - 1, jsonString.Length); return jsonString + "]"; } ///
/// Datatable转换为Json /// ///
Datatable对象 ///
Json字符串
public static string ToJson(DataTable dt) { StringBuilder jsonString = new StringBuilder(); jsonString.Append("["); DataRowCollection drc = dt.Rows; for (int i = 0; i < drc.Count; i++) { jsonString.Append("{"); for (int j = 0; j < dt.Columns.Count; j++) { string strKey = dt.Columns[j].ColumnName; string strValue = drc[i][j].ToString(); Type type = dt.Columns[j].DataType; jsonString.Append("\"" + strKey + "\":"); strValue = StringFormat(strValue, type); if (j < dt.Columns.Count - 1) { jsonString.Append(strValue + ","); } else { jsonString.Append(strValue); } } jsonString.Append("},"); } jsonString.Remove(jsonString.Length - 1, 1); jsonString.Append("]"); if (jsonString.Length == 1) { return "[]"; } return jsonString.ToString(); } ///
/// DataTable转成Json /// ///
///
///
public static string ToJson(DataTable dt, string jsonName) { StringBuilder Json = new StringBuilder(); if (string.IsNullOrEmpty(jsonName)) jsonName = dt.TableName; Json.Append("{\"" + jsonName + "\":["); if (dt.Rows.Count > 0) { for (int i = 0; i < dt.Rows.Count; i++) { Json.Append("{"); for (int j = 0; j < dt.Columns.Count; j++) { Type type = dt.Rows[i][j].GetType(); Json.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":" + StringFormat(dt.Rows[i][j] is DBNull ? string.Empty : dt.Rows[i][j].ToString(), type)); if (j < dt.Columns.Count - 1) { Json.Append(","); } } Json.Append("}"); if (i < dt.Rows.Count - 1) { Json.Append(","); } } } Json.Append("]}"); return Json.ToString(); } ///
/// DataReader转换为Json /// ///
DataReader对象 ///
Json字符串
public static string ToJson(IDataReader dataReader) { try { StringBuilder jsonString = new StringBuilder(); jsonString.Append("["); while (dataReader.Read()) { jsonString.Append("{"); for (int i = 0; i < dataReader.FieldCount; i++) { Type type = dataReader.GetFieldType(i); string strKey = dataReader.GetName(i); string strValue = dataReader[i].ToString(); jsonString.Append("\"" + strKey + "\":"); strValue = StringFormat(strValue, type); if (i < dataReader.FieldCount - 1) { jsonString.Append(strValue + ","); } else { jsonString.Append(strValue); } } jsonString.Append("},"); } if (!dataReader.IsClosed) { dataReader.Close(); } jsonString.Remove(jsonString.Length - 1, 1); jsonString.Append("]"); if (jsonString.Length == 1) { return "[]"; } return jsonString.ToString(); } catch (Exception ex) { throw ex; } } ///
/// DataSet转换为Json /// ///
DataSet对象 ///
Json字符串
public static string ToJson(DataSet dataSet) { string jsonString = "{"; foreach (DataTable table in dataSet.Tables) { jsonString += "\"" + table.TableName + "\":" + ToJson(table) + ","; } jsonString = jsonString.TrimEnd(','); return jsonString + "}"; } ///
/// 过滤特殊字符 /// ///
///
public static string String2Json(String s) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < s.Length; i++) { char c = s.ToCharArray()[i]; switch (c) { case '\"': sb.Append("\\\""); break; case '\\': sb.Append("\\\\"); break; case '/': sb.Append("\\/"); break; case '\b': sb.Append("\\b"); break; case '\f': sb.Append("\\f"); break; case '\n': sb.Append("\\n"); break; case '\r': sb.Append("\\r"); break; case '\t': sb.Append("\\t"); break; case '\v': sb.Append("\\v"); break; case '\0': sb.Append("\\0"); break; default: sb.Append(c); break; } } return sb.ToString(); } ///
/// 格式化字符型、日期型、布尔型 /// ///
///
///
private static string StringFormat(string str, Type type) { if (type != typeof(string) && string.IsNullOrEmpty(str)) { str = "\"" + str + "\""; } else if (type == typeof(string)) { str = String2Json(str); str = "\"" + str + "\""; } else if (type == typeof(DateTime)) { str = "\"" + str + "\""; } else if (type == typeof(bool)) { str = str.ToLower(); } else if (type == typeof(byte[])) { str = "\"" + str + "\""; } else if (type == typeof(Guid)) { str = "\"" + str + "\""; } return str; } public static void RegistAjax(HtmlHead Header, Type type) { string assemblyName = type.FullName + "," + type.Assembly.FullName.Substring(0, type.Assembly.FullName.IndexOf(",")); if (type.Assembly.FullName.StartsWith("App_Code.")) { assemblyName = type.FullName + ",App_Code"; } Literal l = new Literal(); l.Text = "\n
\n" + "
\n" + "
\n" + "
\n"; Header.Controls.Add(l); } }}

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/configman/p/4657557.html

你可能感兴趣的文章
这又是一个测试
查看>>
Github入门操作实录
查看>>
生成300道小学四则运算题
查看>>
Windows怎么从命令行下载文件
查看>>
Chrome 及其 插件“个性化设置”备份
查看>>
第二章ARP——地址解析协议
查看>>
BIO模型
查看>>
前端开发 --- CSS参考手册
查看>>
认识迅雷界面引擎
查看>>
/* 搜索文件的method */
查看>>
Pandas_实现数字顺序填充、指定值交替填充、日期顺序填充(按日、月、年)
查看>>
第八章博客
查看>>
解决input为number类型时maxlength无效的问题
查看>>
使用C#加密及解密字符串
查看>>
MYSQL 5.7 新增150多个新功能
查看>>
UE导航系统详
查看>>
软件测试作业3
查看>>
环境准备—之—linux下安装jdk
查看>>
VB类的应用
查看>>
贪吃蛇
查看>>