我想解析一些從Web API到Java對象的JSON,並有一些問題。解析與genson嵌套的JSON
這裏是JSON:
{
"d":{
"results":[
{
"__metadata" { some metadata I'm not interested in },
"attribute1":"attribute id 1",
"attribute2:"attribute value 1"
},
{
"__metadata" { some metadata I'm not interested in },
"attribute1":"attribute id 2",
"attribute2:"attribute value 2"
}
]
}
}
現在我要地圖以下Java類這一數據,這樣的結果是一個目錄對象,結果數組中的值是CatalogEntry對象:
public class Catalog {
private final List<CatalogEntry> values;
public Catalog() {
values = null;
}
public Catalog(@JsonProperty("results") List<CatalogEntry> values) {
super();
this.values = values;
}
}
public class CatalogEntry {
private String attribute1;
private String attribute2;
public CatalogEntry() {}
public CatalogEntry(@JsonProperty("attribute1") String attribute1,
@JsonProperty("attribute2") String attribute2) {
this.attribute1 = attribute1;
this.attribute2 = attribute2;
}
}
有以下行我試圖JSON字符串反序列化到一個目錄對象:
Catalog catalog = genson.deserialize(json, Catalog.class);
之後,我嘗試獲取Catalog對象中的值,但得到NullPointerException,因爲它似乎是空的。我認爲反序列化對JSON中的「d」對象有問題,但我該如何解決這個問題?任何幫助,將不勝感激。
感謝您的回答,目前無法嘗試您的提示,但明天當我回來工作時。 –
嘿,我通過指定正確的構造函數來嘗試你的tps,但是目錄的值還沒有創建。 –
哦,我看到你的目錄對象不是json的根。你可以改變你的JSON沒有d:{results}而只是{results}?否則,如果所有傳入的jsons都將使用d作爲密鑰,則可以使用[wrapRootValues(「d」,「d」)]配置Genson(http://owlike.github.io/genson/Documentation/Configuration/) – eugen