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 Core 3.0 Previews running results

.Net Framework 4.7.1 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使用方式大同小异。

 

才疏学浅,相关文档等仅供自我总结,如有相关问题可留言交流谢谢。

 

posted @ 2021-06-15 08:31  独角马  阅读(929)  评论(1编辑  收藏  举报