Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从嵌套的JSON响应中检索信息?_Java_Android - Fatal编程技术网

Java 如何从嵌套的JSON响应中检索信息?

Java 如何从嵌套的JSON响应中检索信息?,java,android,Java,Android,我正在检索一个JSON响应,除了一个部分之外没有任何问题。有些项是嵌套的JSONObject: { "response": { "venues": [ { "id": "42829c80f964a5205f221fe3", "name": "AmericanExpressTower", "contact": { "phone": "2126405130",

我正在检索一个JSON响应,除了一个部分之外没有任何问题。有些项是嵌套的JSONObject:

{
"response": {
    "venues": [
        {
            "id": "42829c80f964a5205f221fe3",
            "name": "AmericanExpressTower",
            "contact": {
                "phone": "2126405130",
                "formattedPhone": "(212)640-5130",
                "twitter": "americanexpress"
            },
            "location": {
                "address": "200VeseySt",
                "crossStreet": "WestSt",
                "lat": 40.713618978735,
                "lng": -74.01408649911748,
                "distance": 1926,
                "postalCode": "10285",
                "city": "NewYork",
                "state": "NY",
                "country": "UnitedStates"
            }
        }
    ]
}
}

如何访问联系人对象(如“formattedPhone”)中的一个项目

我可以访问每个项目的“名称”:

JSONObject json = new JSONObject(result);  

JSONArray venues = json.getJSONObject("response")
      .getJSONArray("venues"); 
input.close();  
int vLength = venues.length();
StringBuilder builder = new StringBuilder();
for (int i = 0; i < vLength; i++) {
  builder.append("Location: ");
  builder.append(venues.getJSONObject(i)
      .getString("name").toString());    
  builder.append("\n");          
}
JSONObject json=新的JSONObject(结果);
JSONArray=json.getJSONObject(“响应”)
.getJSONArray(“场馆”);
input.close();
int vLength=场地长度();
StringBuilder=新的StringBuilder();
对于(int i=0;i
以下是我解决问题的方法,因为在某些情况下不存在联系人:

try {
    JSONObject contacts = new JSONObject(venues.getJSONObject(i).getString("contact"));
    builder.append("Phone: ");
    builder.append(contacts.get("formattedPhone")); 
    builder.append("\n"); 
} catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

我还应该添加这样的操作:jsonobjectcontacts=newjsonobject(viouses.getJSONObject(I).getString(“contact”);将从上面拉取整个对象.so contacts.getString(“formattedPhone”),我试过了,它说formattedPhone没有值,而不是I,最初只使用一个索引进行测试,别忘了先验证你的json OK,我试过使用0而不是I,非常感谢。我认为问题是,如果接触不存在,它会产生错误,而在其中一个对象中不存在接触。。。