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

标签 java json 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: 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/

相关文章:

java - 在 Java 中使用 JsonNode 查找没有父级的 JSON 兄弟

json - RxSwift 可观察到的错误停止链 - 使用 Rx 的 Web 服务,如何恢复?

java - 在java中将JSON从ajax请求转换为JSON对象

java - 如何使用 System.out.println 查找 Java 类?

java - 如何让 Jbutton 填充 JPanel 以便按钮之间没有空格?

java - ArithmeticException 偶尔被零除

python - 在 Python 中加载 JSON 文件抛出错误。

java - 我将如何创建对象引用变量数组?

json - 暴露: How to parse JSON into an Entity class

JAVA解析GSON多数组