博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# Json 序列化大全--任我行
阅读量:5119 次
发布时间:2019-06-13

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

public class JsonHelper    {        ///         /// 将Model转换为Json字符串        ///         /// 
/// ///
public static string GetJson
(T obj) { try { DataContractJsonSerializer json = new DataContractJsonSerializer(typeof(T)); using (MemoryStream ms = new MemoryStream()) { json.WriteObject(ms, obj); string strJson = Encoding.UTF8.GetString(ms.ToArray()); string p = @"\\/Date\((\d+)\+\d+\)\\/"; MatchEvaluator me = new MatchEvaluator(ConvertJsonDateToDateString); Regex rg = new Regex(p); strJson = rg.Replace(strJson, me); return strJson; } } catch (Exception ex) { } return string.Empty; } ///
/// 将Json字符串转换为Model /// ///
///
///
public static T ParseJson
(string strJson) { try { string p = @"\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}[a-z,A-Z]"; MatchEvaluator me = new MatchEvaluator(ConvertDateTimeToJsonDate); Regex rg = new Regex(p); strJson = rg.Replace(strJson, me); p = @"\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}"; me = new MatchEvaluator(ConvertDateTimeToJsonDate); rg = new Regex(p); strJson = rg.Replace(strJson, me); using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(strJson))) { DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T)); T obj = (T)serializer.ReadObject(ms); return obj; } } catch (Exception ex) { } return default(T); } ///
/// 将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 ConvertDateTimeToJsonDate(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; } }

注:如果是要将Class类Json序列化时,在实体类上面和成员上面添加一个契约,和WCF 契约一样。

举例如:

///     /// 至爱甄选实体类    ///     [Serializable]    [DataContract]    public class FavoriteInfo    {        private int _id;        private string _title;///         /// 至爱甄选Id        ///         [DataMember]        public int Id        {            set { _id = value; }            get { return _id; }        }         [DataMember]        ///         /// 标题        ///         public string Title        {            set { _title = value; }            get { return _title; }        }}

调用方式如下:

//获取数据集,返回List
IList
favoriteModelList = new PB.Favorite().GetFavoriteModelList(1, 1, ""); if (favoriteModelList!=null && favoriteModelList.Count>0) { string jsonString = JsonHelper.GetJson
>(favoriteModelList); context.Response.Write(jsonString); }

 

 

 

 

转载于:https://www.cnblogs.com/xuyubing/p/3499583.html

你可能感兴趣的文章
网络编程
查看>>
文本隐藏(图片代替文字)
查看>>
java面试题
查看>>
提高码力专题(未完待续)
查看>>
pair的例子
查看>>
前端框架性能对比
查看>>
@property中 retain 详解
查看>>
uva 387 A Puzzling Problem (回溯)
查看>>
12.2日常
查看>>
同步代码时忽略maven项目 target目录
查看>>
MVC.NET:提供对字体文件.woff的访问
查看>>
Oracle中包的创建
查看>>
团队开发之个人博客八(4月27)
查看>>
发布功能完成
查看>>
【原】小程序常见问题整理
查看>>
C# ITextSharp pdf 自动打印
查看>>
【Java】synchronized与lock的区别
查看>>
django高级应用(分页功能)
查看>>
【转】Linux之printf命令
查看>>
关于PHP会话:session和cookie
查看>>