Мне нужно получить данные из веб-службы, я использую Джексон, но у меня такая же проблема с использованием Gson, у меня нет проблем с отдельными объектами, но когда я получаю список нескольких объектов, это не так просто для меня.Как читать JSON в список общих объектов в java?
JSON, полученный, как это:
{"country":
[
{"code":"AD","nombre":"Andorra","name":"Andorra"},
{"code":"AE","nombre":"Emiratos Árabes Unidos","name":"United Arab Emirates"}
]
}
Это список из моего класса CountryWSType
, у меня есть несколько классов, как это и нужен способ, который может получить список любого типа из них. Я пытался разобрать его как список:
List<MyClass> myObjects = mapper.readValue(jsonInput, mapper.getTypeFactory().constructCollectionType(List.class, MyClass.class));
также пытается создать собственный тип списка:
public class ListWSType<T> implements List<T>{
private List<T> listaInterna;
//implents methods
}
Но я всегда получаю JsonMappingException
и у меня нет больше идей о том, как это сделать ,
Я надеюсь, что кто-то может мне помочь.
Как некоторые люди спрашивают здесь класс я пытался разобрать из JSON:
@XmlRootElement(name="country")
@XmlType(propOrder={"code", "nombre", "name"})
public class CountryWSType {
/** Código ISO */
@XmlElement(name="code")
public String code;
/** Nombre en español */
@XmlElement(name="nombre")
public String nombre;
/** Nombre en inglés */
@XmlElement(name="name")
public String name;
/** Constructor sin parámetros. No inicializa nada...
* Está para que funcione el marshall/unmarshall.
*/
public CountryWSType() {}
}
Также обратите внимание, чем когда я положил MyClass это означает класс CountryWSType, извините за missunderstood.
Я предполагаю, что MyClass - это ваш класс, поддерживающий объекты JSON? Возможно, если бы мы могли видеть этот класс и трассировку стека ошибок, было бы легче выяснить, в чем проблема. – Micho
A Список будет '[{...}, {...}, ...]'. У вас есть '{" страна ": [{...}, {...}, ...]}'. Это не список, это объект с полем 'country', который является списком. –
immibis
На внешнем уровне у вас есть объект JSON, а не массив JSON. Это переводит на карту, а не на список. –