我想使用 GSON* 在 JAVA中 解析此 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"] } } }
但是我不知道如何加入root元素: 描述符 ,之后是 app3 元素,最后是 name 元素。
我遵循了本教程http://www.mkyong.com/java/gson-streaming-to-read-and-write- json/,但是它没有显示具有root和childs元素的情况。
Imo,用GSON解析JSON响应的最佳方法是创建“匹配”响应的类,然后使用Gson.fromJson()method。 例如:
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可以是a String,any Reader,a JsonReader或a JsonElement。
yourJson
String
Reader
JsonReader
JsonElement
最后,如果要访问任何特定字段,只需要做:
String name = response.getDescriptor().get("app3").getName();
您总是可以按照其他答案中的建议手动解析JSON,但就我个人而言,我认为这种方法更清晰,更长期可维护,并且更适合JSON的整体思想。