C# Json 序列化大全--任我行
public class JsonHelper
{
/// <summary>
/// 将Model转换为Json字符串
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <returns></returns>
public static string GetJson<T>(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;
} /// <summary>
/// 将Json字符串转换为Model
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="strJson"></param>
/// <returns></returns>
public static T ParseJson<T>(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);
} /// <summary>
/// 将Json序列化的时间由/Date(1294499956278+0800)转为字符串
/// </summary>
/// <param name="m"></param>
/// <returns></returns>
private static string ConvertJsonDateToDateString(Match m)
{
string result = string.Empty;
DateTime dt = new DateTime(, , );
dt = dt.AddMilliseconds(long.Parse(m.Groups[].Value));
dt = dt.ToLocalTime();
result = dt.ToString("yyyy-MM-dd HH:mm:ss");
return result;
} /// <summary>
/// 将时间字符串转化成json时间
/// </summary>
/// <param name="m"></param>
/// <returns></returns>
private static string ConvertDateTimeToJsonDate(Match m)
{
string result = string.Empty;
DateTime dt = DateTime.Parse(m.Groups[].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 契约一样。
举例如:
/// <summary>
/// 至爱甄选实体类
/// </summary>
[Serializable]
[DataContract]
public class FavoriteInfo
{
private int _id;
private string _title;/// <summary>
/// 至爱甄选Id
/// </summary>
[DataMember]
public int Id
{
set { _id = value; }
get { return _id; }
} [DataMember]
/// <summary>
/// 标题
/// </summary>
public string Title
{
set { _title = value; }
get { return _title; }
} }
调用方式如下:
//获取数据集,返回List<FavoriteInfo>
IList<FavoriteInfo> favoriteModelList = new PB.Favorite().GetFavoriteModelList(, , "");
if (favoriteModelList!=null && favoriteModelList.Count>)
{
string jsonString = JsonHelper.GetJson<IList<FavoriteInfo>>(favoriteModelList);
context.Response.Write(jsonString);
}
C# Json 序列化大全--任我行的更多相关文章
- Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全 C# 算法题系列(二) 各位相加、整数反转、回文数、罗马数字转整数 C# 算法题系列(一) 两数之和、无重复字符的最长子串 DateTime Tips c#发送邮件,可发送多个附件 MVC图片上传详解
Newtonsoft.Json C# Json序列化和反序列化工具的使用.类型方法大全 Newtonsoft.Json Newtonsoft.Json 是.Net平台操作Json的工具,他的介绍就 ...
- python json序列化与反序列化操作
python json序列化与反序列化操作 # dumps() dict-->str 序列化 # loads() str---dict 反序列化 result1 = json.dumps({'a ...
- .Net深入实战系列—JSON序列化那点事儿
序 当前主流的序列化JSON字符串主要有两种方式:JavaScriptSerializer及Json.net(Nuget标识:Newtonsoft.Json).JavaScriptSerializer ...
- Newtonsoft.Json 序列化和反序列化 时间格式【转】
1.JSON序列化 string JsonStr= JsonConvert.SerializeObject(Entity); eg: A a=new A(); a.Name="Elain ...
- [.net 面向对象程序设计进阶] (13) 序列化(Serialization)(五) Json 序列化利器 Newtonsoft.Json 及 通用Json类
[.net 面向对象程序设计进阶] (13) 序列化(Serialization)(五) Json 序列化利器 Newtonsoft.Json 及 通用Json类 本节导读: 关于JSON序列化,不能 ...
- DotNet的JSON序列化与反序列化
JSON(JavaScript Object Notation)JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式.在现在的通信中,较多的采用JSON数据格式,JSON有 ...
- C#中JSON序列化和反序列化
有一段时间没有到博客园写技术博客了,不过每天逛逛博客园中大牛的博客还是有的,学无止境…… 最近在写些调用他人接口的程序,用到了大量的JSON.XML序列化和反序列化,今天就来总结下json的序列化和反 ...
- 使用JSON.Net(Newtonsoft.Json)作为ASP.Net MVC的json序列化和反序列化工具
ASP.Net MVC默认的JSON序列化使用的是微软自己的JavaScriptSerializer.性能低不说,最让人受不了的是Dictionary<,>和Hashtable类型居然对应 ...
- Windows Phone 六、JSON序列化
JSON序列化 public class Person { public int Id { get; set; } public string Name { get; set; } public in ...
随机推荐
- CEFSharp在anycpu下的编译
记录一篇博文,将CEFSharp在AnyCpu下使用: 地址:http://pengxiaobo123.blog.163.com/blog/static/20471515420172164593726 ...
- April 22 2017 Week 16 Saturday
Fear is an essential part of our survival, it keeps us alert. 恐惧是生存的重要部分,它让我们保持警惕. Fear and pain are ...
- py常见模块
1.系统相关的信息模块: import sys sys.argv 是一个 list,包含所有的命令行参数. sys.stdout sys.stdin sys.stderr 分别表示标准输入输出,错误输 ...
- Open XML的上传、下载 、删除 ......文件路径
/// <summary> /// Get download site, if download tempfolder not existed, create it first /// & ...
- python里json的排序
写一下json排序的问题: 将得到的数据转换成json格式传给ajax,会发现前台得到的数据很有可能和我们在后台的内容’不太一样‘,如果不出意外,json进行了自排序处理,至于按什么格式排的我还没研究 ...
- lambda Expression的使用方法
Expression<Func<your class, bool>> whereExp = f => true;//类似1=1,初始化条件 if (!string.IsN ...
- 类型构造器--高阶类型(构造器):Kind (type theory)--类型的元
元类型(0阶类型):nullary type, data types 一元类型(一阶类型):unary adj. [数] 一元的 二元类型: is the kind of a binary ty ...
- TCP与虚连接
http://bbs.csdn.net/topics/390262738 在TCP通信时,会建立一个从源端到目的端的虚拟连接.感觉这种连接类似电路交换,只是这种连接是虚拟存在的.发送的报文都应该是沿着 ...
- C++11 新特性之 decltypekeyword
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/lr982330245/article/details/30728131 decltypekeywor ...
- 广搜,深搜,单源最短路径,POJ(1130),ZOJ(1085)
题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=85 http://poj.org/problem?id=1130 这 ...