使用Gson

时间:2017-08-03 14:59:35

标签: java json gson

我正在寻找一种更好的方法(比我现在所做的更好)使用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;
}

非常感谢你。任何帮助和建议都表示赞赏。

1 个答案:

答案 0 :(得分:1)

这看起来像是这样做的。如果您使用JSON模式文件并通过http://www.jsonschema2pojo.org/之类的生成器运行它,它会吐出类似于您列出的pojos,这非常适合使用GSON进行摄取。

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

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