需求 : 如題 , 最近項(xiàng)目中的某個(gè)接口 返回的JSON數(shù)據(jù)是不定的 動(dòng)態(tài)的 , 這就比較坑了, 之前還真沒遇到過(guò) , 因?yàn)闆]法用框架去解析 (之前我都用的 Gsonformat) . 在網(wǎng)上找了下資料 , 好像只能使用 原生的JSONObject 才能操作 , 記錄下來(lái) 以備不時(shí)之需 :
返回的數(shù)據(jù) :
{ "code": 1,"msg": 1, "data": {"1": "法律","2": "工商注冊(cè)", "3": "保險(xiǎn)", "4": "資質(zhì)代辦", "5": "商標(biāo)申請(qǐng)","6": "知識(shí)產(chǎn)權(quán)" "7":....} } , 其中data里的數(shù)據(jù)是不定的,隨著后臺(tái)的增加而增加 .
接下來(lái)直接上代碼 :
// 首先你的創(chuàng)建一個(gè)集合用來(lái)存儲(chǔ)data里的數(shù)據(jù)
List<String> datas = new ArrayList<String>();
try {
// result 就是請(qǐng)求接口返回的數(shù)據(jù)
JSONObject jsonObject = new JSONObject(result);
// 獲取一個(gè)迭代器
Iterator<String> keys = jsonObject.keys();
while (keys.hasNext()) {
// 循環(huán)遍歷里面的keys 根據(jù)keys獲取key
String key = keys.next();
// 判斷當(dāng)key為data時(shí) 取出 data 轉(zhuǎn)成對(duì)象
if (key.equals("data")){
JSONObject data = jsonObject.getJSONObject(key);
// 遍歷data里的keys值
Iterator<String> keys1 = data.keys();
while (keys1.hasNext()){
String key1 = keys1.next();
// 根據(jù)key1獲取對(duì)應(yīng)的value
String str = data.getString(key1);
// 將獲取得value值添加到 集合中 接下來(lái)你可以直接拿到data里的所有數(shù)據(jù)該干嘛干嘛
datas.add(str);
}
}
}
} catch (JSONException e) {
e.printStackTrace();
}