Skip to content

A powerful, easy-to-use and fastest json serializer and deserializer on .Net platforms.

License

Notifications You must be signed in to change notification settings

brucehu123/Swifter.Json

 
 

Repository files navigation

Swifter.Json

1.2.8 更新:

1:将 Swifter.Reflection 整合到 Swifter.Core 中。

2:判断如果平台支持 Emit 则默认使用 FastObjectRW<T>,如果不支持则默认使用 XObjectRW<T>(因 Xamarin.iOS 不支持 Emit)。

1.2.5 更新:

1:因为更新时疏忽了 Swifter.Core 的引用关系,所以跳过了 1.2.3 和 1.2.4 版本。

2:增加了对类似 1_000_1000 这样的数字值的支持。

3:允许字符串键和值不使用引号包裹!(这样的字符串不能使用前后空格,也不能使用转义符)

4:终于魔鬼战胜了天使,Swifter.Json 还是选择了牺牲的部分性能,做一个完全验证的 Json 解析器(除了点 2 和点 3)。

1.2.2 更新:

1:增加了异步方法,JsonFormatter 中以 Async 结尾的方法均为异步方法。

2:修改 Swifter.Extensions.AspNetCore 的扩展使用异步方法。

1.2.1 更新:

1:再度提高性能 (主要原理是对不常见行为禁止内联,提高常见行为的内联成功率)。

2:解决枚举序列化出错,ValueInterface<T>.SetInterface() 不起作用等 BUG。

3:增加特性定义 (反)序列化行为 ([RWFormat], [RWField], [RWObject] 等特性)。

4:增加 AspNetCore 的扩展方法 ConfigureJsonFormatter(this IServiceCollection services)。现在可以很方便将 Swifter.Json 配置到 MVC 了。

5:新增 JsonValue 类,此类可以表示 JSON 反序列化时的任何值(包括对象和数组)。

效率评测图

评测用时图

* 此次测试运行在 .Net Core 3.0 预览版上,并增加了 SpanJson 库。
* 测试中的第三方库均来自 Nuget 上最新正式版本。
* 这次评测让我深知 Span<T> 的硬件加速的性能,我会考虑对 .Net Core 2.1+ 进行特殊处理,提高长字符串解析的性能。

Swifter.Json 仍然支持 .Net Framework 2.0+, .Net Core 2.0+, .Net Standard 2.0+, Mono, Xamarin, Unity 等平台。

Swifter.Json 支持 .Net 上绝大多数的数据类型。包括字典,集合,迭代器,数据读取器,表格等等。

建议在 Nuget 包管理上下载最新的 Swifter.Json 库 (最新版本 1.2.1)。

虽然此前一直强调 Swifter.Json 的性能,但其实它的可扩展性和代码重用性才是可圈可点的。为了这些, Swifter.Json 在性能上其实做了很大让步!

之前决定针对 .Net Core 3.0 使用 Avx2 指令优化,但并没有提升效果,可能是我打开方式不对,所以暂没有此类优化。

简单使用

    public class Demo
    {
        public int Id { get; set; }

        public string Name { get; set; }

        public static void Main()
        {
            var json = JsonFormatter.SerializeObject(new { Id = 1, Name = "Dogwei" });
            var dic = JsonFormatter.DeserializeObject<Dictionary<string, object>>(json);
            var obj = JsonFormatter.DeserializeObject<Demo>(json);;
        }
    }

About

A powerful, easy-to-use and fastest json serializer and deserializer on .Net platforms.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 98.5%
  • HTML 1.4%
  • Other 0.1%