如何使用GSON从同一个JSON文件中获取多个Java对象?
我的json文件如下所示:
{
"card":[
{
"id": 1,
"CardType":"xxx",
"CardDescription":"xxx",
},
{
"id": 2,
"CardType":"yyy",
"CardDescription":"yyy",
}
]
}
对于这些“卡片”,我想生成一个Java对象。所以我用Java创建了一个“Card”类:
public class Card {
private int id;
private String cardType;
private String cardDesc;
//getters and setters
}
这里是我的第一个问题:我如何告诉我的程序“cardType”对应于JSON文件中的“cardType”
到目前为止,我生成对象的代码如下: (selectedFile是JSON文件,用户可以使用文件选择器选择)
try{
Gson gson = new GsonBuilder().create();
BufferedReader reader = new BufferedReader(new FileReader(selectedFile));
JsonStreamParser p = new JsonStreamParser(reader);
while(p.hasNext()){
JsonElement e = p.next();
if(e.isJsonObject()){
Card card = gson.fromJson(e, Card.class);
System.out.println(card.getCardDesc());
}
}
//System.out.println();
}
catch(Exception f){
f.printStackTrace();
}
然而,这是行不通的。错误消息:
com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Unexpected value at line 10 column 5 path $
我的代码错了吗?还是我的JSON文件有问题
# 1 楼答案
您应该直接解析到
Card
类,而不是通过解析器进行阅读创建包装器:
然后告诉你想用
CardType
路径映射cardType
:然后阅读你的数据:
# 2 楼答案
像这样的东西可以做这项工作