我的 json 文件如下所示:
{
"card":[
{
"id": 1,
"CardType":"xxx",
"CardDescription":"xxx",
},
{
"id": 2,
"CardType":"yyy",
"CardDescription":"yyy",
}
]
}
对于这些“卡片”中的每一个,我想生成一个 Java 对象。所以我在 Java 中创建了一个“卡片”类:
public class Card {
private int id;
private String cardType;
private String cardDesc;
//getters and setters
}
这是我的第一个问题:如何告诉我的程序“cardType”对应于 JSON 文件中的“CardType”?
到目前为止,我生成对象的代码是这样的:(selectedFile 是 JSON 文件,用户可以使用 FileChooser 选择它)
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:第 10 行第 5 列路径 $ 处的意外值
我的代码错了吗?还是我的 JSON 文件有问题?
您应该直接解析到您的Card
类,而不是阅读解析器。
创建一个包装器:
public class CardArray {
List<Card> card;
}
然后告诉你想cardType
用CardType
路径映射:
public class Card {
private int id;
@SerializedName("CardType")
private String cardType;
@SerializedName("CardDescription")
private String cardDesc;
//getters and setters
}
然后读取您的数据:
CardArray cardArray = gson.fromJson(reader, CardArray.class);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句