7.Json基础知识总结

  1. 7.总结
    1. 1.1 知识点
      1. 总结主要内容
      2. 学习内容回顾
      3. 优点
      4. 缺点
      5. 主要用处
      6. 实践预告
    2. 7.2 核心要点速览
      1. 读取Json文件方法
      2. JsonUtility
      3. LitJson
        1. 核心方法对比
        2. 关键注意事项

7.总结


1.1 知识点

总结主要内容

学习内容回顾

优点

缺点

主要用处

实践预告


7.2 核心要点速览

读取Json文件方法

操作 关键类/方法 代码示例 说明
文件存读字符串 File.WriteAllText File.WriteAllText(Application.persistentDataPath + “/Test.json”, “存储内容”); 将字符串存储到指定路径的文件中,路径需确保文件夹存在
文件存读字符串 File.ReadAllText string str = File.ReadAllText(Application.persistentDataPath + “/Test.json”); 从指定路径的文件中读取字符串

JsonUtility

操作 关键类/方法 代码示例 说明
序列化对象 JsonUtility.ToJson string jsonStr = JsonUtility.ToJson(t); 将类对象序列化为JSON格式的字符串
反序列化对象 JsonUtility.FromJson MrTao t2 = JsonUtility.FromJson(jsonStr, typeof(MrTao)) as MrTao; 将JSON字符串反序列化为类对象

LitJson

核心方法对比

操作 JsonUtility LitJson 代码示例
序列化对象 JsonUtility.ToJson(对象) JsonMapper.ToJson(对象) json = JsonMapper.ToJson(player);
反序列化对象 JsonUtility.FromJson(json) JsonMapper.ToObject(json) PlayerInfo player = JsonMapper.ToObject(json); // LitJson
序列化集合/数组 需包裹对象(如 [RoleData { List }]) 直接支持 List/T[] List roles = JsonMapper.ToObject(json); // LitJson
序列化字典 不支持(需转换为类) 支持(键建议为 string) Dictionary<string, int> dic = JsonMapper.ToObject<Dictionary<string, int>>(json); // LitJson

关键注意事项

场景 JsonUtility LitJson 说明
特性要求 必须 [Serializable] + [SerializeField](私有成员) 无强制特性(私有成员无法序列化) LitJson 仅序列化公共字段
私有成员 需 [SerializeField] 才能序列化 忽略私有成员(无法序列化) 私有字段直接跳过
字典支持 不支持(需手动转换) 支持(键为 string 最佳) Json 标准键为字符串,数值键会被转为字符串
集合/数组 需包裹对象 直接支持 List/T[] 无需额外包装,与 Json 数组直接对应
null 处理 存储为默认值(如 0/“”) 保留 null(需类成员允许) 反序列化 null 时,类成员保持 null(需无参构造)
构造函数 无要求 必须有无参构造函数(否则反序列化报错) 复杂对象需提供无参构造(如 public Class() {})
编码格式 必须 UTF-8 必须 UTF-8 非 UTF-8 编码会导致乱码或加载失败
中文序列化 自动转义(如 \u4E2D) 保留原始中文(无需转义) LitJson 默认保留 Unicode 字符,可读性更好


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏