最近开发中需要解析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.完成。


Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐