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 @   独角马  阅读(968)  评论(1编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示