Dos.Common 从v1.0.6.7起,不再依赖json.net,修改为内置fastJSON,同时对fastJSON做了升级优化。
json.net很强大,本人也用了很多年了,今后也会一直使用。但为了让Dos.系列组件尽量减少依赖项,同时对比了fastJSON与json.net的性能测试,两者平分秋毫,而fastJSON仅几十KB,所以决定在Dos.系列组件中采用fastJSON,并且修复fastJSON中的大量不足,以达到平时的基本需求。
本文简单介绍下Dos.Common.JsonHelper的用法,以及对fastJSON的升级优化介绍。
对fastJSON的升级优化:
1、fastJSON不支持ulong等类型的反序列化,Dos.Common.JsonHelper在集成fastJSON时解决了这个bug。
2、fastJSON不支持像json.net那样标记属性[JsonProp(PropertyName = "customer")]以便序列化、反序列化自定义属性名,Dos.Common.JsonHelper扩展了JsonProp属性,同时让fastJSON支持标记自定义属性名。
3、修改了fastJSON一些内置参数的默认值,让它更符合国内使用。
4、让fastJSON支持字符串反序列化为int等数字类型。
5、更多优化见 fastJSON更新日志.txt。
Dos.Common.JsonHelper用法:
using Dos.Common; //定义一个需要序列化的类 public class Test { public int a { get; set; } public string b { get; set; } public DateTime c { get; set; } [XmlIgnore] public string d { get; set; } [JsonProp(PropertyName = "ege")] public decimal e { get; set; } } var tClass = new Test() { a = 123, b = "456", c = DateTime.Now, d = "ITdos", e = 123.456M } //序列化Test类 var result1 = JSON.ToJSON(tClass); //序列化结果:{"a":123,"b":"456","c":"2016-04-27T10:52:12","ege":123.456} //反序列化Test类 var result2 = JSON.ToObject<Test>(result1 ); //反序列化结果:a: 123, b: "456", c: {2016-4-27 10:52:12}, d: null, e: 123.456
从以上结果可以看出,用法与json.net大同小异:
1、[XmlIgnore] 表示不序列化该属性。
2、[JsonProp(PropertyName = "ege")] 表示将属性e序列化为ege。
未完待续...
文章链接:http://www.iTdos.com/CSharp/201604/27111005613.html
原创说明:转载IT大师原创文章时请保留原文链接,谢谢!
转载说明:本站转载文章均标明文章来源,若本篇转载侵犯了您的权益,请联系站长删除!
交流Q群:60831381
开源组件:Dos.ORM数据库组件