Java 使用Gson从交错json提取数据的更好方法
我正在寻找一种比目前更好的方法,使用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":
{
"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键值映射。