369 字
2 分钟
JsonUility和LitJson区别

知识点一:相同点(3 条)

  1. 都是干 Json 的序列化和反序列化
  2. Json 文件编码格式都必须是 UTF-8(不然中文乱码)
  3. 都需要声明类来配合方法调用

知识点二:不同点(7 条)

  1. JsonUtility 是 Unity 自带;LitJson 是第三方,要 using LitJson; 引命名空间
  2. JsonUtility 用自定义类时要加 [Serializable] 特性;LitJson 不需要
  3. JsonUtility 支持私有变量(但要加 [SerializeField] 特性);LitJson 不支持私有
  4. JsonUtility 不支持字典;LitJson 支持(但键只能是字符串)
  5. JsonUtility 不能直接反序列化成数据集合(数组、字典);LitJson 可以
  6. JsonUtility 对自定义类要求有无参构造;LitJson 不需要
  7. 存空对象时: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/
作者
烬霜言
发布于
2026-10-06
许可协议
CC BY-NC-SA 4.0

分享文章

生成精美分享图或复制链接,与更多人分享本文。

继续阅读

沿着主题读

基于共同的标签与分类