У меня есть JSONArray, который мне нужно разобрать. Но проблема состоит в том, что один из объектов имеет только одно поле, а у остальных есть два поля.JSONArray не получил правильного анализа
{"Event":{
"Details":[
{
"Key" : "AA",
"Value" : "a"
},
{
"Key" : "BB",
"Value" :"B"
},
{
"Key" :"CC"
},
{
"Key" :"MIN",
"Value" : -1
}
]
}}
Итак, теперь, когда я анализирую его, используя этот код
private void parse(String jsonStr) throws JSONException{
String Value, Key;
JSONObject obj = new JSONObject(jsonStr);
JSONArray array = obj.getJSONObject("Event").getJSONArray("Details");
for(int i = 0; i < array.length(); i++) {
Key = array.getJSONObject(i).getString("Key");
if(Key.equals("CC")){ // make case for null here
Value = "Something was supposed to be here";
}
Object type = array.getJSONObject(i).get("Value");
//System.out.println("Type: \n"+type.getClass().getSimpleName());
if(type instanceof String) {
String ValueStr=array.getJSONObject(i).getString("Value");
System.out.println(ValueStr);
} else if(type instanceof Number) {
Integer ValueInt = array.getJSONObject(i).getInt("Value");
System.out.println(ValueInt);
}
}
}
Он перестает разбор после прочтения "CC". Он даже не читает следующее значение. «Значение» для «ключа» CC иногда является нулевым, иногда строковым. Итак, как мне это уловить? Кроме того, как продолжить синтаксический анализ следующего объекта всякий раз, когда значение «Значение» CC равно null?
EDIT: Итак, я помещаю блок try-catch, но for-loop больше не повторяется. Он проходит через цикл только один раз.
for(int i =0; i<array.length() ; i++)
{
Key = array.getJSONObject(i).getString("Key");
try
{
Object type = array.getJSONObject(i).get("Value");
//System.out.println("Type: \n"+type.getClass().getSimpleName());
if(type instanceof String)
{
String ValueStr = array.getJSONObject(i).getString("Value");
System.out.println(ValueStr);
}
else if(type instanceof Number)
{
Integer ValueInt = array.getJSONObject(i).getInt("Value");
System.out.println(ValueInt);
}
}
catch(JSONException e){
Value="something was supposed to be here";
}
}
И, видимо, я тоже не могу отформатировать свой код. :/ – user270386
, пожалуйста, сначала подтвердите свой json, «Key»: «AA», «Value»: «a» 'должны быть разделены запятыми, а не попробовать ваш код – Durga
извините, что это была моя ошибка при наборе текста. JSONArray в порядке, его генерация создается другим способом. Опять же, сожалею об этом. Я отредактировал его сейчас – user270386