Android JSON getJSONObject不工作,解析不正确
我不明白为什么我的解析不起作用,这是我的JSON: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":"
{
"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)