Java JSONArray和Dynamic键

时间:2011-09-20 02:06:57

标签: java json

我有一个这种格式的JSON,带有电子邮件的动态密钥

{
   "id":johnsmith@gmail.com",
   "contact":[
  {
     "uid":0,
     "name":"johnsmith",
     "email":[
        {
           "home":"johnsmith0@gmail.com"
        },
        {
           "work":"johnsmith1@gmail.com"
        }
     ],
     "mobile":[
        {
           "cc":"+60",
           "mobile":"00000000"
        },
        {
           "cc":"+60",
           "mobile":"00000001"
        }
     ]
  }
   ]
}

我试过

Iterator it = contactArray.getJSONObject(i)
            .getJSONObject("email").keys();

但是我收到了错误

org.json.JSONException: JSONObject["email"] is not a JSONObject.

但这样做有效,但没有方法可以从JSONArray获取密钥。

            JSONArray emailArray = contactArray.getJSONObject(i)
                    .getJSONArray("email");

如何处理动态密钥?感谢。

1 个答案:

答案 0 :(得分:1)

数组没有键,它们有元素。这应该基于java集合类型,使用循环结构来测试它:

JSONArray emailArray = contactArray.getJSONObject(i).getJSONArray("email");

for(Object o: emailArray){
    System.out.println(o);
}

如果emailArray为空,则不会输出任何内容,如果其中包含元素,则会输出该值。