我尝试在下一个json上应用gson.fromJson:
{
"1a": {"param1": "text",
"param2": "text1",
"param3": [0],
"param4": "text2",
"param": "text3"},
"1b": {"param1": "text",
"param2": "text1",
"param3": [0],
"param4": "text2",
"param5": "text3"},
//and so on
}
所以我创建了下一个类:
public class listItems {
private List<ItemCode> itemList;
public List<ItemCode> getItemList() {
return itemList;
}
public void setItemList(List<ItemCode> itemList) {
this.itemList= itemList;
}
然后我创建下一个类:
public class ItemCode{
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public Item getItem() {
return item;
}
public void setItem(Item item) {
this.item= item;
}
private String code;
private Item item;
}
然后我创建了具有getter和setter的下一个字段的类Item:
private String param1;
private String param2;
private String[] param3;
private String param4;
private String param5;
然后我调用方法gson.fromJson(text, listItems.class)
并返回null。我的问题在哪里,我怎么做?
答案 0 :(得分:1)
您可以轻松地将JSON反序列化为Map<String, Item>
。见下面的例子:
Gson gson = new GsonBuilder().create();
Type type = new TypeToken<Map<String, Item>>(){}.getType();
Map<String, Item> result = gson.fromJson(new FileReader(new File("/x/data.json")), type);
System.out.println(result);
反序列化后,您可以将Map
以上转换为您想要的任何POJO。如果要隐藏反序列化逻辑,可以为listItems
类编写自定义反序列化器。