gpt4 book ai didi

java - 如何使用 GSON 从同一个 JSON 文件中获取多个 Java 对象?

转载 作者:行者123 更新时间:2023-11-30 02:08:26 26 4
gpt4 key购买 nike

我的 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: Unexpected value at line 10 column 5 path $

我的代码有问题吗?或者我的 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);

关于java - 如何使用 GSON 从同一个 JSON 文件中获取多个 Java 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50774050/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com