Swifter.Json简介

Posted 乾坤容我静,万物任他行

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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使用方式大同小异。

 

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

 

以上是关于Swifter.Json简介的主要内容,如果未能解决你的问题,请参考以下文章

Swifter.Json 可能是 .Net 平台迄今为止性能最佳的 Json 序列化库开源

[.NET 开源] 高性能的 Swifter.MessagePack 已发布,并附带新版本的 Swifter.Json 和 Swifter.Data。

Swifter.Json -- 在 .Net 平台上的一个功能强大,简单易用,稳定又不失高性能的 JSON 序列化和反序列化工具。

迄今为止 .Net 平台功能最强大,性能最佳的 JSON 序列化和反序列化库。

Android 逆向类加载器 ClassLoader ( 类加载器源码简介 | BaseDexClassLoader | DexClassLoader | PathClassLoader )(代码片段

Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段