我想在 JAVA 中使用 GSON 解析这个 JSON 文件:
{
"descriptor" : {
"app1" : {
"name" : "mehdi",
"age" : 21,
"messages": ["msg 1","msg 2","msg 3"]
},
"app2" : {
"name" : "mkyong",
"age" : 29,
"messages": ["msg 11","msg 22","msg 33"]
},
"app3" : {
"name" : "amine",
"age" : 23,
"messages": ["msg 111","msg 222","msg 333"]
}
}
}
但我不知道如何访问根元素:descriptor,然后是 app3 元素,最后是 name 元素。
我按照本教程 http://www.mkyong.com/java/gson-streaming-to-read-and-write-json/ ,但它没有显示具有根和子元素的情况。
最佳答案
Imo,使用 GSON 解析 JSON 响应的最佳方法是创建与您的响应“匹配”的类,然后使用 Gson.fromJson()
方法。
例如:
class Response {
Map<String, App> descriptor;
// standard getters & setters...
}
class App {
String name;
int age;
String[] messages;
// standard getters & setters...
}
然后只需使用:
Gson gson = new Gson();
Response response = gson.fromJson(yourJson, Response.class);
yourJson
可以是 String
, 任意 Reader
, 一个 JsonReader
或 JsonElement
.
最后,如果你想访问任何特定的字段,你只需要这样做:
String name = response.getDescriptor().get("app3").getName();
您始终可以按照其他答案中的建议手动解析 JSON,但我个人认为这种方法更清晰,更易于长期维护,并且更适合 JSON 的整体理念。
https://stackoverflow.com/questions/16377754/