需要解析的json数据如下:
{
"head": { //这是一个JSONObject,里面存放需要的相关信息
"code": "0", //这是一个键值对,里面存放需要的值(主要取里面的值来使用)
},
"body": { //这同样是一个JSONObject,里面存放需要的相关信息
"List": [ //这是一个JSONArray
{
"测试数据": "测试数据" //这是一个键值对,里面存放需要的值(主要取里面的值来使用)
},
{
"测试数据": "测试数据" //这是一个键值对,里面存放需要的值(主要取里面的值来使用)
}
]
}
}
下面用解析上面的json数据:
HttpPost httpRequestLogin = new HttpPost(url); //url是请求json数据的地址
try {
// 发出HTTP request
httpRequestLogin.setEntity(new StringEntity(jsonObjectLogin.toString(), HTTP.UTF_8)); //jsonObjectLogin.toString()是发出请求的json数据
// 取得HTTP response
HttpResponse httpResponse1 = new DefaultHttpClient().execute(httpRequestLogin);
// 若状态码为200 ok
if (httpResponse1.getStatusLine().getStatusCode() == 200) {
// 取出回应字串,返回的所有信息,均存放在该字符串中
String strResultLogin = EntityUtils.toString(httpResponse1.getEntity());
// 整体的数据是个jsonobject对象,将字符串转化成jsonObjectLogin.toString()
JSONObject object = new JSONObject(strResultLogin);
// 取得head的值,值是个JSONObject对象
JSONObject head = object.getJSONObject("head");
String code = head.getString("code"); //在JSONObject类型的head下用getString方法取出,“code”对应的值,放入String中
// 取得body的值,值是个JSONObject对象
JSONObject body = object.getJSONObject("body");
//在JSONObject类型的body下用getJSONObject方法取出,“List”对应的JSONArray值,放入JSONArray中
JSONArray List = body.getJSONArray("List");
for (int i = 0; i < List.length(); i++) { //取出JSONArray之后,利用循环逐个出去数组里面的值
JSONObject object2 = List.getJSONObject(i);
String 测试数据 = object2.getString("测试数据");
}
}else{
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
以上为一般json的解析,在复杂的json,可能也许就是JSONArray里面嵌套JSONArray,那样的话,可以顺着上面的思想,在循环中在嵌套一个循环,逐层取出即可!