默认计划
2343人加入学习
(5人评价)
【唐老狮】Unity数据持久化之Json
价格 ¥ 149.00
承诺服务
该课程属于 Unity3d实战就业路线课程套餐
请加入后再学习

ListJosn 反序列化

JsonMapper。ToObject("json字符串");

[展开全文]

方法:JsonMapper.ToObject(字符串)

jsonStr = File.ReadAllText(Application.streamingAssetsPath + "/lesson2.json");

方法一:
// JsonData是LItJson提供的类对象,可以用键值对的形式访问其中的内容
JsonData data = JsonMapper.ToObject(jsonStr);
print(data["name"]);
print(data["age"]);

方法二:

Person p2 = JsonMapper.ToObject<Person>(jsonStr);

但其实现在方法二是会报错的

ArgumentException: The value '1' is not of type 'System.Int32' and cannot be used in this generic collection.

因为json文本中字典存储的键都是字符串的形式,与Person类中字典键的int不匹配

然后把Person类中的dic字典注释,继续会有另一个报错:

MissingMethodException: Default constructor not found for type Lesson2+Student

这是因为Student类中没有无参构造函数,在其中添加无参构造后就可以正常反序列化

注意:

类结构需要无参构造函数,否则反序列化报错字典虽然支持,但是键在使用为数值时会有问题,需要使用字符串类型

 

注意事项:

LitJson可以直接读取数据集合

还是以car为例:

jsonStr = File.ReadAllText(Application.streamingAssetsPath + "/car.json");

Car[] arr = JsonMapper.ToObject<Car[]>(jsonStr);
List<Car> arr2 = JsonMapper.ToObject<List<Car>>(jsonStr);

这样是可以直接转化的

如果需要直接转字典,假设一个字典数据dic.json为:

{
    "name": 1,
    "name2": 2,
    "name3": 3,
    "name4": 4
}

注意!!!如果name4行最后有逗号,后面反序列化会出错

然后直接转为Dictionary:


jsonStr = File.ReadAllText(Application.streamingAssetsPath + "/dic.json");
Dictionary<string, int> dic = JsonMapper.ToObject<Dictionary<string, int>>(jsonStr);

文本编码格式需要是UTF-8,不然无法加载

 

LitJson提供的序列化/反序列化方法:JsonMapper.ToJson和ToObject<>

LitJson不用加特性

LitJson不支持私有变量

LitJson支持字典序列化反序列化

LitJson可以直接将数据反序列化为数据集合

LitJson反序列化时,自定义类型需要无参构造

Json文档编码格式必须是UTF-8

 

 

[展开全文]

JsonMapper.ToObject(字符串);  返回JsonData

JsonData是LitJson提供的类对象,可以用键值对的形式去访问其中的内容,例如data["name"]

 

JsonMapper.ToObject<T>(字符串);

类结构需要无参构造函数,否则会报错

 

 LitJson可以直接读取数据集合

 

文本的编码格式需要是UTF-8

[展开全文]

授课教师

游戏开发前端主程

课程特色

视频(17)
下载资料(16)

学员动态

松松 加入学习
roscorpioot 加入学习
muqianke 加入学习
逐梦鸢行 加入学习
sszs 加入学习