我必須從Web服務獲取數據,我使用的是傑克遜,但使用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
列表將是'[{...},{...},...]'。你有'{「國家」:[{...},{...},...}}。這不是一個列表,它是一個帶有「country」字段的對象,它是一個列表。 –
immibis
在最外層有一個JSON對象,而不是JSON數組。這轉換爲一個地圖,而不是一個列表。 –