Json. 文件,.Json
使用固定格式来存储和表示数据
Json : , : {} “” []
1.对象用键值对表示. “键”:值。键字符串
2.数据由逗号分隔开
3.花括号保存对象
4.方括号保存数组
物品:名字,攻击力,类型
对象:键值对表示
键值对中的键名写在前面并且必须用双引号“”包裹,使用冒号:分割键和值
例如:
{“name” : “屠龙刀”, “atk” : 100, “type” : “刀”}
json值:
1.string字符串(用双引号包裹)
2.number数字(整型,浮点数)
3.object对象 (使用花括号包裹数据)
4.array数组 (方括号内)
5.bool布尔 (true, false)
6.null
数组:数组在json中是以防括号[]包裹起来的内容,一般表现为:
[ “jave”,”C#”,”C++”,”VB” ]
或
[{“name” : “java”},{“name” : “C#”},{“name”:”C++”}]
复杂:
{“list” : [{“name”: “java”}, {“name”:”c++”}]}
Json中的键值对对应c#的类对象
Json转object - JsonUtility.FromJson<T>()
T:就是你需要转成的object
参数:就是string,就是json字符串
如果需要转换键名一定要跟类里的变量名相同(区分大小写),只能转公有的非静态变量,不能转属性(get,set)。注意json中的num类型不要用001,会报错,直接使用1
注意,如果想要转换一个类中的类对象变量,需要使用[System.Serializable]对这个类对象变量的类进行标记,证明该类是可序列化的
[System.Serializable]
public class ItemData {}
public class ItemParent {
public ItemData itemData;
}
c#的object转json -JsonUtility.ToJson()
第一个参数:object:需要转的类对象
第二个参数:bool:可以选择是否转出的json串进行格式化
数组转json
在一个类中去定义一个数组或者List,然后去转换这个类对象从而实现数组的转换
转换结果:{“list”:[……]}
先建立一个类,类里有数组,然后实例化类对数组进行赋值,最后转实例化出来的对象,就实现转数组
{"arr":[......]}
json转数组
注意: 这种格式[“a”,”b”,”b”]不能转
{“arr”:[…..]}:定义一个类,类里定义一个数组或list,通过这种方式去转换
{"arr”:[“1”,”2”,”s”,”f”]}:有一个类,类里有一个变量arr的数组
:可以用两种方式接受(array,List)
[System.NonSerialized]:不可序列化
[System.Serializable]:特性,可序列化的
序列化和反序列化
序列化:把对象转换为字节序列的过程叫序列化
反序列化:把字节序列转换为对象的过程叫反序列化
主要用途:
把对象的数据永久保存到硬盘上
总结:
可能出现错误信息:
1.NullReferenceException: 原因是对于类没进行序列化
2.ArgumentException:json的格式错误
使用JsonUtility的注意事项
1.注意键名和类的对象名必须一致,键名需要使用引号包裹
2.可被序列化的类,一定要用[System.Serializable]标记
3.只能序列化类中的公有非静态变量,属性不行。
4.如果转json的过程中想要有格式的json,ToJson的第二个参数true。