Java 使用Gson从交错json提取数据的更好方法

Java 使用Gson从交错json提取数据的更好方法,java,json,gson,Java,Json,Gson,我正在寻找一种比目前更好的方法,使用Gson从JSON文件中提取一些数据。显然,所需的数据部分但完全交错,如下所示: { "media": { "content": [ { "node": { "text": "foo", "id": "123", "user": "somebody" } } ] }, "enabled": true, "count":

我正在寻找一种比目前更好的方法,使用Gson从JSON文件中提取一些数据。显然,所需的数据部分但完全交错,如下所示:

{
    "media": {
        "content": [
            {
                "node": { "text": "foo", "id": "123", "user": "somebody" }
            }
        ]
    },
    "enabled": true,
    "count": 0,
    "token": "abc"

}
我知道我可以做类似的事情,但这种方法相当乏味:

GsonBuilder builder = new GsonBuilder();
jsonObject = builder.create().fromJson(jsonString, jsonObject.class);

class jsonObject {
    Media media;
    Boolean enabled;
    Integer count;
    String token;

    class Media {
        ArrayList<Node> content;
    }

    class Node {
        HashMap<String,String> node;
    }

}
所以我的问题是,是否存在一种更优雅的方法来提取字段?我想要一门课,比如:

class jsonObject {
    HashMap<String, String> node;
    Boolean enabled;
    Integer count;
    String token;
}

多谢各位。任何帮助和建议都将不胜感激。

这似乎是解决问题的方法。如果您使用JSON模式文件,并通过生成器运行它,就像它会吐出类似于您所列出的POJO一样,这非常适合使用GSON进行摄取

但是,如果要将整个json对象拉入映射,可以使用

Type type = new TypeToken<Map<String, String>>(){}.getType();
Map<String, String> map = gson.fromJson("{'key1':'value1','key2':'value2'}", type);

我相信这个问题和你的一样,谢谢@Luca。这看起来很有趣,但乍一看并不是我想要的。但我会仔细看看的。谢谢。好的,也许我只需要完成这项工作,然后为我想要处理的每个json文件编写一个类。这个链接看起来很有用!如果您查看我引用的站点,当您将“源类型”更改为json时,它将从json数据块中推断出正确的模式。然后你可以让它吐出所有的POJO,这是一种非常好的生成类的方法,可以让你开始学习,而不必手工编写它们。这是一个很好的示例,可以演示反序列化json到java键值映射。