Json(JavaScript Object Notation)是一种轻量级的数据交换格式
JSON的两种结构:JSONObject和数组(JSONArray)
对象(Map):对象是键值对形式的Map,键和值之间用“ : ”隔开,两个Map之间用“, ”隔开,多个Map被包括在大括号{ }之间形成JSON对象。
{
key1:value1,
key2:value2,
key3:value3,
......
}
//一个json对象,对象包括2个属性,name和age。
{
name:"jtzeng",
age:"21" //注意:与结束括号相邻的键值对后面没有逗号
}
数组(Array):数组结构被包括在中括号[ ]之间,其中包括0或多个以” , ”分隔的Map对象。
[
{
key1:value1,
key2:value2
},
{
key3:value3,
key4:value4
}
]
//简单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对象,里面存了一个数组,这个数组里面呢只有一个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
}
]
}
]
}
}
]
private void parseJson() {
String json_str = "{\"name\":\"张三\",\"age\":21}";
try {
JSONObject mJSONObject = new JSONObject(json_str);
String name = mJSONObject.getString("name");
String age = mJSONObject.getString("age");
nameTv.setText(name);
ageTv.setText(age);
} catch (JSONException e) {
e.printStackTrace();
}
private void arrayparseJson() {
String json_str = "[ {\"name\":\"张三\",\"age\":21}, {\"name\":\"李四\",\"age\":22}]";
try {
JSONArray jsonArray = new JSONArray(json_str);
JSONObject obj1 = jsonArray.getJSONObject(0);
String name = obj1.getString("name");
int age = obj1.getInt("age");
JSONObject obj2 = jsonArray.getJSONObject(1);
String name2 = obj2.getString("name");
int age2 = obj2.getInt("age");
nameTv.setText(name);
nameTv2.setText(name);
ageTv.setText(age + "");
ageTv2.setText(age + "");
} catch (JSONException e) {
e.printStackTrace();
}
}