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

框架

我的 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 文件有问题?

Manh Quyet Nguyen

您应该直接解析到您的Card类,而不是阅读解析器。

创建一个包装器:

public class CardArray {
    List<Card> card;
}

然后告诉你想cardTypeCardType路径映射

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用GSON一个JSON转换为Java对象时,我重写一个Java地图?

Java对象使用JSON GSON到

Java的8:如何创建列表地图,主要是来自同一个类(EMPID)获取和值对象(雇员)本身?

如何从JSON使用GSON提取多个对象

我可以在Android上的多个线程中使用同一个RoomDatabase对象吗?

使用gson java解析和获取嵌套的json对象

使用gson java解析和获取嵌套的json对象

使用JAXB可以为同一个Java对象提供多个XML映射?

Java使用Gson将对象值更新为json文件

使用同一个WebDriver对象执行多个JUnit测试

JAVA,GSON:-使用GSON在json对象中添加多个数据

如何使用Java 8对同一个自定义对象执行多项操作

如何从同一个父对象的ID中获取元素

如何为同一个类的多个对象设置动画?

如何在同一个对象中推送多个数据?

如何在同一个OOP类中修改多个对象?

Android:如何在同一个文件中迭代多个JSON对象数组

使用Jackson使用未知密钥名称在同一个文件中处理多个JSON对象

如何使用jQuery / JS获取同一个父对象的另一个孩子的子元素

如何使用GSON从JSON响应中获取对象数组

如何将多个对象添加到同一个索引中

Java中多个线程访问同一个对象

如何查询同一个json对象数组中的多个属性?

网络响应中同一个json对象的不同键类型

多个线程使用同一个 EventHubClient 对象发布事件是否安全?

如何使用Javascript读取json文件并在同一个json文件中写入对特定键值的更改?

如何在Java中的Android Studio中将同一个JSON中具有相同键的JSON对象进行比较?

如何在 Python 中的同一个类对象的 2 个实例中触发一个方法?

Java将不同的对象放在同一个arrayList中