org.json解析动态Json数据
{
"data": [{
"workId": 1,
"workNote": "工作计划"
}],
"work1": {
"userId": 1,
"name": ["张三", "王五"]
},
"work2": {
"userId": 2,
"name": ["Tom"]
}
}
上面这段Json,最外层是JsonObject。data层JsonArray,里面是JsonObject。work1、work2、wrok3 ......动态增加。
想取出workId、name值。这里使用org.json解析。
private void parseData() {
try {
String str = getResources().getString(R.string.text_json);
int workCount = 0;
JSONObject mJsonObject = new JSONObject(str);
JSONArray mJsonArray = mJsonObject.getJSONArray("data");
// 遍历长度
for (int i = 0; i < mJsonArray.length(); i++) {
JSONObject mObject = (JSONObject) mJsonArray.get(i);
int workId = mObject.getInt("workId");
}
Iterator keys = mJsonObject.keys();
while (keys.hasNext()) {
String key = String.valueOf(keys.next());
if (key.contains("work")) {
workCount++;
}
}
for (int i = 1; i <= workCount; i++) {
JSONObject mObject = (JSONObject) mJsonObject.get("work" + i);
JSONArray mArray = mObject.getJSONArray("name");
for (int j = 0; j < mArray.length(); j++) {
String name = (String) mArray.get(j);
Log.i(TAG, "===name===" + name);
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
打印结果
===name===张三
===name===王五
===name===Tom