LitJson 使用注意

一.【序列化注意(内存到硬盘)】:
string jsonStr = JsonMapper.ToJson(传入对象名);

1.不能序列化私有变量;
2.相对于 JsonUtility, LitJson 不需要加特性。一种是 里面包裹的类不需要加,还有一种是 private的变量加了也没用,因为 private 变量不能够被序列化出来;
3.支持 C# 的 字典 Dictionary 。(建议我们自定义的 Dictionary 集合的键 是 字符串, 因为Json的特点, 它的 Json 字符串中的键 会加上 双引号)
4.相对于Unity 自带 JsonUtility 而言,Json字符串 可以存 null,而不是JsonUtility那样取默认值;


二.【反序列化注意(硬盘到内存)】:
比如 反序列化到这个类:
public class Hero { public string name; public int age; public string address; }

方法一:
JsonData jsData = JsonMapper.ToObject(传入字符串); //这个JsonData 是键值对那种形式
可以这样拿数据:
print(jsData["name"]); print(jsData["age"]); print(jsData["address"]); 拿到数据。

方法二:Hero hero = JsonMapper.ToObject<Hero>(jsonStr);
注意:1. LitJson 虽然支持 Dictionary集合 ,但是 C# 字典集合 Dictionary 的键得是 string类型,不能直接int,double 等数值类型。
2. 类结构需要无参构造函数,否则反序列化会出错: 比如你的类,自己写了个有参构造函数,那么就导致无参构造函数就被顶替掉了。所以呢,还需要你补充一个无参构造。要不就什么构造都不要写,系统new 时候 自己创建无参构造。

用法三(就是方法二 ):
` Hero[] heroArray = JsonMapper.ToObject<Hero[]>(jsonStr); //直接转为数组

List heroList = JsonMapper.ToObject<List>(jsonStr);` //直接转为List集合

上一篇:JsonUtility 使用注意事项


下一篇:对象转化为字符串,字符串转化为对象