(一)JSON简单知识
最近在做几个课程作业,涉及到网络数据传输用到Json,遂记录记录知识。
1.JSON概述
点击打开:JSON官网
- JSON : JavaScript 对象表示法(JavaScript Object Notation)
- JSON是轻量级的文本数据存储和交换格式。类似XML。
- JSON 独立于语言和平台。也就是说在C/C++, C#, Java, JavaScript, Perl, Python等语言中可以使用json语法来进行数据的交换
- JSON 具有自我描述性,更易理解。
- JSON比XML更小、更快、更易解析。因为XML中要使用标记来描述数据,往往需要的标记很多,无疑增加了交换产生的流量等。
如下所示,同样的数据使用JSON(左图)和XML(右图)表示:
2.JSON的两种数据结构
JSON的两种结构:对象(Map)和数组(Array)
2.1 对象(Map)
对象是键值对形式的Map,键和值之间用“ : ”隔开,两个Map之间用“, ”隔开,多个Map被包括在大括号{ }之间形成JSON对象。
{
key1:value1,
key2:value2,
key3:value3,
......
}
2.2 数组(Array)
数组结构被包括在中括号[ ]之间,其中包括0或多个以” , ”分隔的Map对象。
[
{
key1:value1,
key2:value2
},
{
key3:value3,
key4:value4
}
]
3.JSON数据示例
①简单json对象
一个json对象,对象包括2个属性,name和age。
{
name:"jtzeng",
age:"21" //注意:与结束括号相邻的键值对后面没有逗号
}
②简单json数组
一个json数组,数组里面包括2个对象,每个对象包括2个属性。
[
{
"name":"aaa",
"age":"21"
},
{
"name":"bbb",
"age":"21"
}
]
③稍微复杂
一个json对象,包括2个属性,data和result,而result对应的是一个json数组,该数组里面包含两个json对象。
{
"data":[
{
"planning_content":"do homework",
"planning_date":"2015-12-18",
"planning_id":1
},
{
"planning_content":"Go shopping.",
"planning_date":"2015-12-19",
"planning_id":2
}
],
"result":"true"
}
④再复杂点点
一个json对象,包含3个json数组,其中数组programmers和authors包含各一个json对象,而musicians包含两个json对象。
{
"programmers":[
{
"firstName":"pfirstname",
"lastName":"plastname",
"email":"pmail"
}
],
"authors":[
{
"firstName":"afirstname",
"lastName":"alastname",
"genre":"agenre"
}
],
"musicians":[
{
"firstName":"mfirstname1",
"lastName":"mlastname2",
"instrument":"guitar"
},
{
"firstName":"mfirstname2",
"lastName":"mlastname2",
"instrument":"piano"
}
]
}
⑤相对复杂
一个json对象,里面存了一个数组,这个数组里面呢只有一个institute的对象,该对象下有name和grade属性,grade对应一个json数组,该数组下面有三个对象。
[
{
"institute":{
"name":"Software Institute",
"grade":[
{
"name":"freshman",
"class":[
{
"no.":1,
"students":61
},
{
"no.":2,
"students":62
},
{
"no.":3,
"students":63
}
]
},
{
"name":"sophomore",
"class":[
{
"no.":1,
"students":51
},
{
"no.":2,
"students":52
},
{
"no.":3,
"students":53
}
]
},
{
"name":"junior",
"class":[
{
"no.":1,
"students":41
},
{
"no.":2,
"students":42
},
{
"no.":3,
"students":43
}
]
}
]
}
}
]
后面将分别记录用org.json、json-lib和Gson包解析json数据。