java - 使用 GSON 将 Json 解析为 JAVA 对象,其中 Json 元素可能会有所不同

标签 java json parsing gson

我正在尝试使用 GSON 将 JSON .txt 文件解析为 JAVA 对象。 JSON 文件具有以下结构:

    {
        "event0" : {
        "a" : "abc",
        "b" : "def"
        },

        "event1" : {
        "a" : "ghi",
        "b" : "jkl",
        "c" : "mno"
        }
    }

我已将文本文件读入一个名为 dataStr 的字符串。我想使用 fromJson 方法将事件捕获到以下 JAVA 类中:

public class Event {
    private String a;
    private String b;
    private String c;

    public Event() {}

}

问题是 JSON 在某些元素中可能有一个额外的字段“c”。我想将所有事件解析为 Event 类对象,对于没有“c”字段的情况,我想在我的对象中将其设置为 null 或零。事先不知道哪些元素将具有“c”字段。

具体来说,我无法弄清楚如何处理某些 JSON 元素中的一个额外字段。我想按照以下方式做一些事情:

Gson gson = new Gson();
ArrayList<Event> events = gson.fromJson(dataStr, Event.class);

但我首先被困住了,如何遍历 Json 文件中的事件,其次,如何将一些偶尔丢失的字段处理到同一个 Event 对象中。我真的很感激在正确的方向踢。谢谢大家。

我对 JSON 解析相当陌生,可能在以下答案中遗漏了一些内容:

Using Gson to convert Json into Java Object

Mapping JSON into POJO using Gson

Using gson to parse json to java object

Parse JSON into a java object

How to parse a json file into a java POJO class using GSON

最佳答案

我不确定我是否理解你的问题。据我了解,您正在尝试使用 java 类中不可用的额外字段转换 json 对象。坦率地说,我不明白你为什么想要那个或者是否可以开始。您可以通过将 json 转换为 Map 来解决此问题。

map map = gson.fromJson(jsonString, Map.class);

关于java - 使用 GSON 将 Json 解析为 JAVA 对象,其中 Json 元素可能会有所不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44967922/

相关文章:

java - 如何使用 JXL 覆盖我以前的 Excel 文件?

java - 我自己的数组列表

java - 为什么线程不安全的类不能在仅使用 getter 和 setter 的情况下工作?

ruby - 如何在 Ruby 中用单引号 (') 解析 JSON 字符串?

c# - 有没有办法在不使用 JsonIgnore 属性的情况下忽略 Json.NET 中的 get-only 属性?

c# - HTML 敏捷包

.net - 使用正则表达式查找匹配的括号

c++ - 学习C++解析

java - Selenium Java Webdriver 选择历史选项卡

javascript - 从 json 响应对象中过滤数据