ListJosn 反序列化
JsonMapper。ToObject("json字符串");
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