Может ли кто-нибудь сказать мне, как перебрать JSONArray
, который возвращает и JSONArray
и JSONObject
в нем.Я попробовал приведенный ниже код, и я получаю ошибку, как показано ниже.
com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of 'com.example.jsonarr.pojoClass[]' out of START_OBJECT token
Код
List<pojoClass> pojoClassList = new ArrayList();
JSONArray jsonArrayList = new JSONArray( jsonResponse );
ObjectMapper objectMapper = new ObjectMapper( );
pojoClassList = (List)objectMapper.readValue(jsonArrayList.toString(),
objectMapper.getTypeFactory().constructCollectionType(List.class, pojoClass[].class));
JSONArray
[
{
"Key1": "Value1",
"Key2": "Value2",
"Key3": "Value3",
"Value1_tim": {
"amVal": 0,
"pmVal": "0"
}
},
[ {
"Key1": "Value1",
"Key2": "Value2",
"Key3": "Value3",
"Value1_tim": {
"amVal": 0,
"pmVal": "0"
}
}]
]
С нормальным для цикла.
for ( int i = 0; i < jsonArrayList.length(); i++ ) {
JSONObject jsonObject = jsonArrayList.optJSONObject( i );
if ( jsonObject != null ) {
pojoClass = objectMapper.readValue( jsonObject.toString(), PojoClass.class );
}
if ( jsonObject == null ) {
JSONArray jsonArrayInner = new JSONArray( jsonArrayList.getJSONArray( i ).toString() );
for ( int j = 0; j < jsonArrayInner.length(); j++ ) {
JSONObject jsonObject1 = jsonArrayList.optJSONObject( j );
if ( jsonObject1 != null ) {
pojoClass = objectMapper.readValue( jsonObject1.toString(), PojoClass.class );
}
}
}
pojoClassList.add( pojoClass );
}
Как мне сделать это с Java 8
?