【百科-Json】https://baike.so.com/doc/663437-702310.html
简单的说:json是一种数据格式,以string类型存储,是一种可嵌套的键值对。
json数据可分为2类:Json对象、Json数组
json对象被{ }抱着,而json数组在 [ ]的怀里。
1、最简单的json对象
{
"name":"张三",
"age":"16",
"wife":"李四"
}
这是个json对象,被{ }抱着,名叫张三,二八妙龄,娶妻李四。
里面有3个键值对,被","隔开。
每个键值对的"键"在":"之前,值在":"之后。
2、嵌套json对象
{
"name":"张三",
"age":"16",
"wife":{
"name":"李四",
"age":"19",
"add":"北京"
}
}
这里可以看到,wife的值变成了一个被{ }抱着的json对象,而不仅仅是一个名字代号。
wife这个json对象名叫李四,年方19(张三报金砖),京城人。
3、嵌套json数组
{
"name":"张三",
"age":"16",
"wife":{
"name":"李四",
"age":"19",
"add":"北京",
"son":[
{
"name":"王二",
"birth":"2015"
},
{
"name":"王三",
"birth":"2016"
},
{
"name":"王四",
"birth":"2017"
}
]
}
}
这个wife带来仨儿子,wife的son对应的值是一个json数组,数组里面又有3个json对象
可以看到json数组也可以作为键值对的"值"出现。
如何解析Json?
1、找目标
我们要明白我们想要什么数据,比如对应上面的json数据 我们想掌握 张三老婆所有儿子的资料。
2、逐步解
按照json字符串到json对象——获取wife对象——获取son数组——遍历son数组,获得每个son对象——Log每个son对象的属性 的顺序。
2.1 获取张三json对象
JsonData zsObject=JsonMapper.ToObject (json);
使用JsonMapper.ToObject把json字符串变成了zsObject这个json对象;
2.2 捕捉张三老婆这个json对象
JsonData wifeObject = zsObject ["wife"];
JsonData通过“键”名获取“值”的方法,此处zsObject ["wife"]的值wifeObject是json对象,仍然为JsonData类型。
2.3 获取张三老婆的儿子json数组
JsonData sonArray=wifeObject ["son"];
此处wifeObject ["wife"]的值sonArray是json数组,同样为JsonData类型。
2.4 遍历张三老婆的儿子们sonArray,获得每一个儿子json对象
for (int i = 0; i < sonArray.Count; i++) {
JsonData sonObject=sonArray;
}
2.5 对于每个儿子json对象,把他打出来
for (int i = 0; i < sonArray.Count; i++) {
JsonData sonObject=sonArray;
Debug.Log (sonObject["name"].ToString()+sonObject["birth"].ToString());
}
综上可得解析代码 :
public void decode(string json){
JsonData zsObject = JsonMapper.ToObject (json);
JsonData wifeObject = zsObject ["wife"];
JsonData sonArray=wifeObject["son"];
for (int i = 0; i < sonArray.Count; i++) {
JsonData sonObject=sonArray;
Debug.Log (sonObject["name"].ToString()+sonObject["birth"].ToString());
}
}
技巧:
Practice :
请使用LitJson把下面的json中的所有"w"字段拼接起来:
{
"sn":1,