[英]How to get multiple Java objects from the same JSON file with GSON?
我的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文件,用戶可以使用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);
這樣的事情可以做的工作
JsonObject jsonObject = gson.fromJson(reader, JsonObject.class);
gson.fromJson(jsonObject.get("card"), new TypeToken<List<Card>>(){}.getType());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.