Android JSON getJSONObject不工作,解析不正确

Android JSON getJSONObject不工作,解析不正确,android,json,parsing,Android,Json,Parsing,我不明白为什么我的解析不起作用,这是我的JSON: { "fileVersion":"1.0", "graves":[ { "ID_grave":"1", "ID_line":"1", "sequence":"1", "persons":[ { "ID_person":"1", "name":"

我不明白为什么我的解析不起作用,这是我的JSON:

  {  
   "fileVersion":"1.0",
   "graves":[  
      {  
         "ID_grave":"1",
         "ID_line":"1",
         "sequence":"1",
         "persons":[  
            {  
               "ID_person":"1",
               "name":"Janez",
               "surname":"Novak",
               "dateBirth":"1956-08-11",
               "dateDeath":"2014-02-12",
               "important":"0",
               "imp_desc":""
            }
         ]
      },
      {  
         "ID_grave":"2",
         "ID_line":"1",
         "sequence":"2",
         "persons":[  
            {  
               "ID_person":"2",
               "name":"Mojca",
               "surname":"Novak",
               "dateBirth":"1953-02-13",
               "dateDeath":"2012-04-08",
               "important":"0",
               "imp_desc":""
            }
         ]
      }
   ]
}
当我想要获取第一个JSONObject时,此代码正在运行:

 String jsonData = convertStreamToString(in);

         JSONObject json = new JSONObject(jsonData);  
         JSONArray name = json.getJSONArray("graves");

for (int i = 0; i < name.length(); i++) {
         JSONObject grave = name.getJSONObject(i);   
         lineArrayList.add(grave.getString("ID_line"));
         graveArrayList.add(grave.getString("ID_grave"));
}
String jsonData=convertStreamToString(in);
JSONObject json=新的JSONObject(jsonData);
JSONArray name=json.getJSONArray(“graves”);
对于(int i=0;i
但我想得到“graves”对象中的“persons”数组。这应该行得通,但不行,我得到的只是第一人称数组,其中的名字是Janez,而不是第二个数组,其中的名字是Mojca:

    String jsonData = convertStreamToString(in);

         JSONObject json = new JSONObject(jsonData);  
         JSONArray name = json.getJSONArray("graves");

    for (int i = 0; i < name.length(); i++) {
         JSONObject grave = name.getJSONObject(i);  
         JSONArray persons = grave.getJSONArray("persons");

         for (int k = 0; k < persons.length(); k++) {   

//The problem was because of the index i, you have to change to k and it will work
          JSONObject grave = persons.getJSONObject(i);
           nameArrayList.add(grave.getString("name"));
          surnameArrayList.add(grave.getString("surname"));

         }

      }
String jsonData=convertStreamToString(in);
JSONObject json=新的JSONObject(jsonData);
JSONArray name=json.getJSONArray(“graves”);
对于(int i=0;i
graves是
JSONArray
,persons是
JSONArray
进入
graves

 for (int i = 0; i < name.length(); i++) {
      JSONObject grave = name.getJSONObject(i);   
      JSONArray persons = grave.optJSONArray("persons");
      if (persons != null) {
         for (int j = 0; j < persons.length(); j++) {

         }
      }
 }
for(int i=0;i
按如下方式进行解析

String jsonData = convertStreamToString(in);

     JSONObject json = new JSONObject(jsonData);  
     JSONArray name = json.getJSONArray("graves");

for (int i = 0; i < name.length(); i++) {
     JSONObject grave = name.getJSONObject(i);  
     JSONArray persons = grave.getJSONArray("persons");

     for (int k = 0; k < persons.length(); k++) {

      JSONObject grave = persons.getJSONObject(i);
       nameArrayList.add(grave.getString("name"));
      surnameArrayList.add(grave.getString("surname"));

     }

  }
String jsonData=convertStreamToString(in);
JSONObject json=新的JSONObject(jsonData);
JSONArray name=json.getJSONArray(“graves”);
对于(int i=0;i
试试这个:

  for (int i = 0; i < name.length(); i++) {
          JSONObject grave = name.getJSONObject(i);   
          JSONArray persons = grave.optJSONArray("persons");
          if (persons != null) {
             for (int j = 0; j < persons.length(); j++) {
                     JSONObject grave= persons.getJSONObject(i);
                     lineArrayList.add(grave.getString("ID_line"));
                     //so on..
             }
          }
for(int i=0;i
好的,就在今天,我发现我只从第一个persons数组和第二个persons数组中获取数据,例如,从第二个persons数组中获取的是一个名为Mojca的人。我尝试了所有三种给定的解决方案,但均无效。

我只获取第一个数组(我获取的是Janez,但不是Mojca)我认为应该使用k作为内部循环的索引我只得到第一个数组(我得到的是Janez而不是mojca)我只得到第一个数组(我得到的是Janez而不是mojca)