2022-07-08 Unity Json2——LitJson


​ LitJson 是一个第三方库,用于处理 Json 的序列化和反序列化

​ 它是 C# 编写的,体积小、速度快、易于使用

​ 它可以很容易的嵌入到我们的代码中,只需要将 LitJson 代码拷贝到工程中即可

一、获取 LitJson
  1. 前往 LitJson 官网:LitJSON - Home

    image-20220708222230881
  2. 通过官网前往 GitHub 获取最新版本代码

    点击此处下载最新版本:

    image-20220708222349498
  3. 将讲代码拷贝到 Unity 工程中,即可开始使用 LitJson

    代码路径在 litjson-0.18.0 -> src -> LitJson

二、使用 LitJson 进行序列化

​ 使用方法:public static string ToJson(object obj)

using LitJson;

MrTang t = new MrTang();

string jsonStr = JsonMapper.ToJson(t);
print(Application.persistentDataPath);
File.WriteAllText(Application.persistentDataPath + "/MrTang.json", jsonStr);

​ 注意:

  1. 相对 JsonUtlity 不需要加特性
  2. 不能序列化私有变量
  3. 支持字典类型。字典的键建议都是字符串。因为 Json 的特点:Json 中的键会加上双引号
  4. 需要引用 LitJson 命名空间
  5. LitJson 可以准确的保存 null 类型
三、使用 LitJson 反序列化

​ 使用方法:public static T ToObject<T>(string json)

// 方法:
// JsonMapper.ToObject(字符串)
jsonStr = File.ReadAllText(Application.persistentDataPath + "/MrTang2.json");

// JsonData 是 LitJson 提供的类对象 可以用键值对的形式去访问其中的内容
JsonData data = JsonMapper.ToObject(jsonStr);
print(data["name"]);
print(data["age"]);
// 通过泛型转换 更加的方便 建议使用这种方式
MrTang2 t2 = JsonMapper.ToObject<MrTang2>(jsonStr);

​ 注意:

  1. 类结构需要无参构造函数,否则反序列化时报错
  2. 字典虽然支持 但是键在使用为数值时会有问题 需要使用字符串类型
  3. LitJson 可以直接读取数据集合
  4. 文本编码格式需要是 UTF-8,不然无法加载
四、总结
  1. LitJson 提供的序列化反序列化方法 JsonMapper.ToJson 和 ToObject
  2. LitJson 无需加特性
  3. LitJson 不支持私有变量
  4. LitJson 支持字典序列化反序列化
  5. LitJson 可以直接将数据反序列化为数据集合
  6. LitJson 反序列化时 自定义类型需要无参构造
  7. Json 文档编码格式必须是 UTF-8
五、与 JsonUtlity 的对比

​ JsonUtlity 和 LitJson 相同点:

  1. 他们都是用于 Json 的序列化反序列化
  2. Json 文档编码格式必须是 UTF-8
  3. 都是通过静态类进行方法调用

​ JsonUtlity 和 LitJson 不同点:

  1. JsonUtlity 是 Unity 自带,LitJson 是第三方需要引用命名空间
  2. JsonUtlity 使用时自定义类需要加特性,LitJson 不需要
  3. JsonUtlity 支持私有变量(加特性),LitJson 不支持
  4. JsonUtlity 不支持字典,LitJson支持(但是键只能是字符串)
  5. JsonUtlity 不能直接将数据反序列化为数据集合(数组字典),LitJson 可以
  6. JsonUtlity 对自定义类不要求有无参构造,LitJson 需要
  7. JsonUtlity 存储空对象时会存储默认值而不是 null,LitJson 会存 null

​ 如何选择两者:根据实际需求,建议使用LitJson
​ 原因:LitJson 不用加特性,支持字典,支持直接反序列化为数据集合,存储 null 更准确

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蔗理苦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值