JSON数据的数据格式类似于map,详细格式在这里就详细说了。
以下面这个JSON数据为例说明一下解析JSON的一种方法。
{
"head": {
"tip": "success",
"result": 0
},
"boxs": [
{
"picture": null,
"boxId": 1,
"boxUrl": "jjjjjjj",
"boxType": "00",
"updateTime": "2015-11-15T17:51:30",
"status": "-1",
"description": null,
"boxName": "学三智能存取柜1",
"longitude": null,
"boxCode": "2230",
"latitude": null,
"boxAddr": "北京邮电大学"
},
{
"picture": null,
"boxId": 2,
"boxUrl": "jjjjjjj",
"boxType": "00",
"updateTime": "2015-11-15T15:20:38",
"status": "-1",
"description": null,
"boxName": "学一智能存储柜",
"longitude": null,
"boxCode": "2231",
"latitude": null,
"boxAddr": "北京邮电大学"
},
{
"picture": null,
"boxId": 3,
"boxUrl": "jjjjjjj",
"boxType": "00",
"updateTime": "2015-11-15T15:20:43",
"status": "-1",
"description": null,
"boxName": "学二智能存取柜",
"longitude": null,
"boxCode": "2232",
"latitude": null,
"boxAddr": null
}
]
}
这个Json字符串包含了两个对象,他们的键分别是“head”和一个"boxs",其中head的值是又是一个JSON对象,boxs的值是一个JSON对象的数组(JSONArray)。
package com.lql.util;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class JsonUtil {
public static List<Map<String, Object>> parseStringToObject(String jsonStr) {
List<Map<String, Object>> datas = new ArrayList<Map<String,Object>>();
try {
JSONObject jsonObject = new JSONObject(jsonStr);//将JSON字符串转换为JSON对象
//首先根据这个JSON对象键"head"所对应的子JSON对象
JSONObject head = jsonObject.getJSONObject("head");
Map<String, Object> map = parseHeadMap(head);
datas.add(map);
//boxs又对应了若干个JSON对象,所以通过键"boxs"得到一个JSON对象数组
JSONArray boxsJson = jsonObject.getJSONArray("boxs");
//遍历每个JSON对象,对各个JSON对象进行解析
for(int i = 0 ; i < boxsJson.length() ; i++){
JSONObject jsonObj = boxsJson.getJSONObject(i);
map = parseJsonToBox(jsonObj);
datas.add(map);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return datas;
}
<span style="white-space:pre"> </span>//解析head所对应的JSON对象
public static Map<String, Object> parseHeadMap(JSONObject jsonObj) {
Map<String, Object> map = new HashMap<String, Object>();
try {
Object resValue = jsonObj.get("result");
map.put("result", resValue);
Object tipValue = jsonObj.get("tip");
map.put("tip", tipValue);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return map;
}
//当当前的JSON对象已经是没有嵌套子JSON对象时,就直接通过各个键获取每个字段的值
public static Map<String, Object> parseJsonToBox(JSONObject jsonObj){
Map<String, Object> map = new HashMap<String, Object>();
try {
Object picValue = jsonObj.get("picture");
Object boxId = jsonObj.get("boxId");
Object boxUrl = jsonObj.get("boxUrl");
Object boxType = jsonObj.get("boxType");
Object updateTime = jsonObj.get("updateTime");
Object status = jsonObj.get("status");
Object description = jsonObj.get("description");
Object boxName = jsonObj.get("boxName");
Object longitude = jsonObj.get("longitude");
Object boxCode = jsonObj.get("boxCode");
Object latitude = jsonObj.get("latitude");
Object boxAddr = jsonObj.get("boxAddr");
map.put("picture", picValue);
map.put("boxId", boxId);
map.put("boxUrl", boxUrl);
map.put("boxType", boxType);
map.put("updateTime", updateTime);
map.put("status", status);
map.put("description", description);
map.put("boxName", boxName);
map.put("longitude", longitude);
map.put("boxCode", boxCode);
map.put("latitude", latitude);
map.put("boxAddr", boxAddr);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return map;
}
}
这个只是JSON解析的一种方法,还有其他方法比如Gson,fastjson等