从具有不同密钥的JSON对象获取电话号码

时间:2018-02-20 11:57:08

标签: android json

我有包含键值对的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"
    }]
}

谢谢你......接受任何帮助。

3 个答案:

答案 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)));
      }
    }