369 字
2 分钟
JsonUility和LitJson区别
知识点一:相同点(3 条)
- 都是干 Json 的序列化和反序列化
- Json 文件编码格式都必须是 UTF-8(不然中文乱码)
- 都需要声明类来配合方法调用
知识点二:不同点(7 条)
- JsonUtility 是 Unity 自带;LitJson 是第三方,要
using LitJson;引命名空间 - JsonUtility 用自定义类时要加
[Serializable]特性;LitJson 不需要 - JsonUtility 支持私有变量(但要加
[SerializeField]特性);LitJson 不支持私有 - JsonUtility 不支持字典;LitJson 支持(但键只能是字符串)
- JsonUtility 不能直接反序列化成数据集合(数组、字典);LitJson 可以
- JsonUtility 对自定义类要求有无参构造;LitJson 不需要
- 存空对象时:JsonUtility 会存默认值而不是 null;LitJson 会存 null(更准确)
实际项目建议用 LitJson,理由四条:不用加特性、支持字典、支持直接反序列化成数据集合、存 null 更准确。
相关api
| JsonUtility.ToJson(obj) | 对象 → JSON 字符串 | 单行输出 |
| JsonUtility.ToJson(obj, true) | 同上,带缩进换行 | prettyPrint,人看舒服 |
| JsonUtility.FromJson<T>(json) | JSON 字符串 → 新的 T 对象 | 类要 [Serializable] |
| JsonUtility.FromJsonOverwrite(json, 已有对象) | JSON 数据覆盖到现有对象上 | 不新建对象、省 GC,适合把读出来的档直接灌进正在运行的对象 |
| JsonMapper.ToJson(obj) | 对象 → JSON 字符串 | 不用 [Serializable],不用无参构造 |
| JsonMapper.ToObject<T>(json) | JSON → 指定类型 | T 可以是类、List<T>、Dictionary<string,T> |
| JsonMapper.ToObject(json) | JSON → JsonData | 不知道类型时的万金油 |
JsonUility和LitJson区别
https://jinshuangyan.top/posts/unity-basic/分享文章
生成精美分享图或复制链接,与更多人分享本文。
继续阅读
最后更新于 ,距今已过 5 天
部分内容可能已过时