Swifter.Json简介
Json就不多做介绍了,Newtonsoft.Json相信大家也都用过了。今天给大家介绍另外一款json的序列化工具Swifter.Json。
GitHub地址:https://github.com/Dogwei/Swifter.Json/wiki
Wiki地址:https://github.com/Dogwei/Swifter.Json
Swifter.Json 强大之处
1:支持 .Net 已知所有对象结构,包括深度循环结构,引用类型属性等。
2:支持几乎所有常用的数据类型,并多方案轻松自定义类型的序列化行为,后续将持续增加。
3:支持缩进 Json,忽略 Null 值 0 值 "" 值等,支持使用 { "$Ref" : "#/Target" } 表示重复引用,或将循环引用序列化为 Null 等,支持设置最大深度。
4:支持 .Net Core 2.0+,.Net Framework 2.0+,.Net Standard 2.0+,Xamarin,Unify,Mono 等平台。
5:Swifter.Json 几乎是无 BUG 的,因为它已有多个上线项目在运行,且每次发布都会经过我们自己单元测试和 Newtonsoft.Json 和 Spanjson 的单元测试来确保它的稳定性,如果您遇到了问题,可以在 Github 上发布一个 issue,我们会尽力帮助您。
6:完整全面的 API 中文文档,每个公开的类型和方法都有中文说明,也有 Github 上的 Wiki 文档 (现主要维护文档)。
部分 .Net 现有的 JSON 工具性能对比
.Net Core 3.0 Previews running results.
.Net Framework 4.7.1 Previews running results.
本人测试Swifter.Json 与 Newtonsoft.Json,超过百万次后Swifter.Json的性能是Newtonsoft.Json的三到五倍。
简单使用
新建一个Demo类
public class Demo { public int Id { get; set; } public string FirstName { get; set; } public DateTime CreateTime { get; set; } }
//1、基本使用 //序列化一个对象为json var json = JsonFormatter.SerializeObject(new { Id = 1, FirstName = "Ma", CreateTime =DateTime.Now}); var dic = JsonFormatter.DeserializeObject<Demo>(json);
//2、日期格式的处理
var jsonFormatter2 = new JsonFormatter();
jsonFormatter2.SetDateTimeFormat("yyyy-MM-dd HH:mm:ss"); //设置json中日期为统一格式
Demo de2 = new Demo { Id = 1, FirstName = "", CreateTime = DateTime.Now };
var json2 = jsonFormatter2.Serialize<Demo>(de2);
//也可以在上面的实体类属性上设置
[RWFormat("yyyy-MM-dd HH:mm:ss")]
public DateTime CreateTime { get; set; }
//3、字段特殊处理 var jsonFormatter3 = new JsonFormatter( JsonFormatterOptions.IgnoreNull // 忽略 Null 值 | JsonFormatterOptions.IgnoreZero // 忽略基础类型的 0 值 | JsonFormatterOptions.IgnoreEmptyString // 忽略字符串 "" 值 ); jsonFormatter3.SetDateTimeFormat("yyyy-MM-dd HH:mm:ss"); Demo de3 = new Demo { Id = 1, FirstName = "ss", CreateTime = DateTime.Now }; var json3= jsonFormatter3.Serialize<Demo>(de3);
其他使用方式可以去Wiki上查看,总体跟Newtonsoft.Json使用方式大同小异。
才疏学浅,相关文档等仅供自我总结,如有相关问题可留言交流谢谢。