解析三層json陣列步驟
最近開發中需要解析json陣列,因為是接手的是同事的程式碼,發現程式碼中用瞭解析json的四個jar包,所以普通的json陣列解析不能實現想要的效果,再此寫下步驟。
首先發現了這兩行程式碼:
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
所以發現使用了jar包。
然後從同事那裡獲得的json陣列是這樣的:
u_depresult = {"IsError":false,"Message":"success","Data":[{"dep_id":"2016051221302058642057108414","dep_pid":"root","dep_name":"辦公室","dep_desc":null,"dep_code":null,"dep_order":null,"dep_history":null,"create_user":null,"create_date":"2016-05-12 21:30:20","update_date":null,"update_user":null,"is_import":"T"}]} 我們需要用到“dep_name”的資料。 觀察json陣列發現Data是一個數組【】。 所以解析步驟如下: try {if (u_depresult == null) {
msg.obj = "連線伺服器超時,請稍後再試!";
} else {
JSONObject recidObj = JSONObject.fromObject(u_depresult);
if (recidObj.get("IsError").toString().equals("true")) {
msg.obj = recidObj.get("Message");
} else {
SONArray recidObj01 = JSONArray.fromObject(recidObj.get("Data"));
u_dep = recidObj01.getJSONObject(0).getString("dep_name");
}
}
} catch (Exception e) {
// TODO: handle exception
}
1.解析是要注意是使用的JSONbject.fromObject(),這是jar包的一個方法 2.因為Data是一個數組,所以要用JSONArray。 3.recidObj.get("Data")是取出在recidObj 中的Data陣列。
4.Data陣列只有一層,因此getJSONObject(0)就可以了,然後getString取出dep_name。 5.完成。