今天来总结一下WebGL平台上不同Json插件的差别,话不多说直接开始。
JsonUtility
JsonUtility是Unity自带的Json解析,无需另外安装插件。
优点:
- Unity自带,兼容性好,WebGL平台可以使用
- 轻量级,性能较好。
缺点:
- 不支持复杂结构,如List、Dictionary、多态类。
- 需要对类进行[Serializable]标记。
- 无法解析时会直接报错抛出异常,而不是返回null值,错误处理不够友好。
官方文档:https://docs.unity3d.com/2022.3/Documentation/ScriptReference/JsonUtility.html
LitJSON
LitJSON是个人比较推荐的Json插件,轻量级的Json插件,导入即可使用。WebGL兼容性好,不会存在平台支持问题。缺点是与Newtonsoft.Json相比功能较少,功能没有Newtonsoft.Json全面,但中小规模Json足够使用了。
优点:
- 轻量级,导入LitJSON.dll即可使用。
- 兼容性较好,WebGL可以放心使用。
缺点:
- 功能较少,与Newtonsoft.Json相比不支持复杂类型、自定义序化、LINQ to JSON。
- 对较大的Json文件解析效率不如Newtonsoft.Json。
- 无法解析时会直接报错抛出异常,而不是返回null值,错误处理不够友好。
官方文档:
LitJson官网:https://litjson.net/
LitJson GitHub:https://github.com/LitJSON/litjson
Newtonsoft.Json
Newtonsoft.Json是一个比较全面且比较好用的Json插件,对于大型和复杂Json文件的解析有比较好的表现。但对于WebGL平台的兼容性比较差。
优点:
- 功能强大,几乎支持所有的Json操作。如复杂类型、自定义序化、LINQ to JSON、日期格式等。
- 性能好,特别是在大型Json文件的解析时,性能要好于JsonUtility、JsonUtility。
- 良好的错误处理,解析错误时有详细的错误信息,不会直接报错抛出异常。
缺点:
- 兼容性较差,由于Newtonsoft.Json采用反射方式进行序列化,所以对AOT编码的平台有较大的限制。
- 需要较新的.Net版本,需要Unity 2021及以上版本才能支持。
- 文件提交较大,约500K以上,对包体大小较为敏感的项目可能不太友好。
官方文档:
Newtonsoft.Json官网:https://www.nuget.org/packages/Newtonsoft.Json/13.0.3?_src=template