您的位置:首页 > 移动开发 > Objective-C

如何分清JSON解析什么时候该用JSONObject,什么时候该用JSONArray。

2016-03-02 14:45 609 查看
前一段时间学习Android解析JSON数据,发现不知道什么时候该用JSONObject,什么时候该用JSONArray。所以通过上网查询了资料,然后整理写下这篇博客。

JSONObject: 可以看作是一个json对象,其包含一对(Key/Value)数值。所表现的形式是最外被大括号”{}”包裹,其中的Key和Value被冒号”:”分隔,数据结构为:
{key:value,key:value,…}
的键值对的结构。在面向对象的语言中,key为对象的属性,value为对应的属性值。

JOSNArray: 它代表一组有序的数值。所表现的形式是用方括号”[]”包裹,数值以逗号”,”分隔,数据结构为 :
[value1,value2,value3]


简单来讲当要解析的JSON数据类型是:
{"key":"value"}
就用JSONObject解析。如果是
[value1,value2,value3]
就用JSONArray解析。

具体我们通过例子说明:

单数据类型:{"id":"5","version":"5.5","name":"Angry Birds"}
复合数据类型:
{/*JSONObject*/
"list":[/*JSONArray*/
{/*JSONObject*/
"id":"5",
"version":"5.5",
"name":"zhangsan"
},
{/*JSONObject*/
"id":"6",
"version":"6.0",
"name":"lisi"},
{ /*JSONObject*/
"id":"7",
"version":"7.7",
"name":"wangwu"
}
]
}


以下是解析代码:

//解析单数据类型
private void parseJSONWithJSONObject(String jsonData) {
try {
JSONObject jsonObject = new JSONObject(jsonData);
String id = jsonObject.getString("id");
String version = jsonObject.getString("version");
String name = jsonObject.getString("name");
textView.setText(id + " " + version + " " + name);
} catch (JSONException e) {
e.printStackTrace();
}
}

//解析复合数据类型
private void parseJSONObjectOrJSONArray(String jsonData) {
try {
String count = "";
JSONObject jsonObject = new JSONObject(jsonData);
JSONArray jsonArray = jsonObject.getJSONArray("list");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject1 = jsonArray.getJSONObject(i);
String id = jsonObject.getString("id");
String version = jsonObject.getString("version");
String name = jsonObject.getString("name");
count = id + " " + version + " " + name;
}
textView.setText(count);
} catch (JSONException e) {
e.printStackTrace();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息