UD3L4——LitJson
UD3L4——LitJson
LitJson
它是一个第三方库,用于处理Json的序列化和反序列化
LitJson是C#编写的,体积小、速度快、易于使用
它可以很容易的嵌入到我们的代码中
只需要将LitJson代码拷贝到工程中即可
本章代码关键字
1 | using LitJson; //LitJson的命名空间 |
知识点
- LitJson提供的序列化反序列化方法
JsonMapper.ToJson()
和ToObject<>()
- LitJson无需加特性
- LitJson不支持私有变量
- LitJson支持字典序列化反序列化
- LitJson可以直接将数据反序列化为数据集合
- LitJson反序列化时 自定义类型需要无参构造,尤其是重载了构造函数的类,一定要额外加上无参构造函数
- Json文档编码格式必须是UTF-8
获取LitJson
- 前往LitJson官网
- 通过官网前往GitHub获取最新版本代码
- 讲代码拷贝到Unity工程(注意!只需要拷贝src文件下的litjson文件夹即可!且可以只保留C#文件的部分) 即可开始使用LitJson
使用LitJson进行序列化
参数:类对象
1 | JsonMapper.ToJson() |
1 | MrTang2 t = new MrTang2(); |
序列化注意事项
- 相对JsonUtlity不需要加特性
- 不能序列化私有变量
- 支持字典类型,字典的键 建议都是字符串 因为 Json的特点 Json中的键会加上双引号 (如果不用字符串,反序列化字典大概率会报错!)
- 需要引用LitJson命名空间
- LitJson可以准确的保存null类型
使用LitJson反序列化
参数:Json字符串,返回值:JsonData
对象
该方法拥有泛型方法,可以直接使用泛型方法,返回的就是泛型参数里填写的类
1 | JsonMapper.ToObject() |
1 | MrTang2 t2 = JsonMapper.ToObject<MrTang2>(JsonStr); |
JsonData
JsonData
是LitJson提供的类对象 可以用键值对的形式去访问其中的内容,如果使用.ToObject()
,返回的就是这个类
1 | JsonData data = JsonMapper.ToObject(JsonStr); |
反序列化注意事项
- 类结构需要无参构造函数,否则反序列化时报错(包括类里面的自定义类也需要无参构造函数!)
- 字典虽然支持 但是键在使用为数值时会有问题 需要使用字符串类型
注意事项
-
LitJson可以直接读取数据集合,甚至可以直接读取字典(只要符合类型的对应格式)
1
2
3
4
5
6
7[
{"hp":4,"speed":6,"volume":5,"resName":"Airplane/Airplane1","scale":15},
{"hp":3,"speed":7,"volume":4,"resName":"Airplane/Airplane2","scale":15},
{"hp":2,"speed":8,"volume":3,"resName":"Airplane/Airplane3","scale":15},
{"hp":10,"speed":3,"volume":10,"resName":"Airplane/Airplane4","scale":6},
{"hp":6,"speed":5,"volume":7,"resName":"Airplane/Airplane5","scale":10}
]1
2JsonStr = File.ReadAllText(Application.persistentDataPath + "/RoleInfo.json");
RoleInfo2[] arr = JsonMapper.ToObject<RoleInfo2[]>(JsonStr); -
文本编码格式需要是UTF-8 不然无法加载
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 文KRIFE齐的博客!