我有包含键值对的Json数组,第一个是电话号码,第二个是那个类型 我只需要电话号码(即任何对象的第一个KeyValue对)
来自第一个对象的示例
" 099 28 491993"
,来自Second Object`
" 027-888-13885"
`等等..
{
"PhoneList": [{
"Phone1": "099 28 491993",
"PhoneType": "TYPE_MOBILE"
}, {
"Phone2": "027-888-13885",
"PhoneType": "TYPE_MOBILE"
}, {
"Home": "027-824-28797",
"PhoneType": "TYPE_HOME"
}, {
"Phone3": "094 28 401823",
"PhoneType": "TYPE_MOBILE"
}, {
"Phone4": "027-830-13275",
"PhoneType": "TYPE_MOBILE"
}, {
"Home": "027-824-28797",
"PhoneType": "TYPE_HOME"
}]
}
谢谢你......接受任何帮助。
答案 0 :(得分:1)
下面只介绍如何迭代动态密钥。在您的情况下,您必须首先通过json对象,然后通过子键进行第二次迭代。
您可以使用.keys()
方法收集密钥,然后迭代它。
Iterator<String> iterator = json.keys();
while (iter.hasNext()) {
String key = iter.next();
String value = json.get(key);
}
答案 1 :(得分:1)
试试这个
try {
JSONObject object= new JSONObject(response);
JSONArray phoneListArray = contactObject.getJSONArray("PhoneList");
for (int j = 0; j < phoneListArray.length(); i++) {
JSONObject jsonObject = phoneListArray.getJSONObject(i);
Iterator keys = jsonObject.keys();
while(keys.hasNext()) {
String name = (String) keys.next();
// because in every Object Ignoring value Of PhoneType
if(!name.equalsIgnoreCase("PhoneType")){
String value = String.valueOf(jsonObject.get(name));
// do what ever you want with value.
Log.e("PHONE", jsonObject.getString(name));
}
}
}
} catch (JSONException e) {
e.printStackTrace();
}
答案 2 :(得分:1)
JSONArray phoneJSONArray = phoneListJsonArray;
for (int j = 0; j < yourJSONArray.length(); j++) {
JSONObject phoneJSONObject = yourJSONArray.getJSONObject(j);
for(int i = 0; i<phoneJSONObject.names().length(); i++){
Log.v(TAG, "key = " + phoneJSONObject.names().getString(i) + " value = " + phoneJSONObject.get(phoneJSONObject.names().getString(i)));
}
}