java - 使用 GSON 解析 JSON 文件

我想在 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 , 一个 JsonReaderJsonElement .

最后,如果你想访问任何特定的字段,你只需要这样做:

String name = response.getDescriptor().get("app3").getName();

您始终可以按照其他答案中的建议手动解析 JSON,但我个人认为这种方法更清晰,更易于长期维护,并且更适合 JSON 的整体理念。

https://stackoverflow.com/questions/16377754/

相关文章:

python - 使用 Scrapy 抓取 JSON 响应

json - 在单行上从 jq 获取输出

javascript - Javascript对象和JSON对象有什么区别

json - angularjs - ng-重复 : access key and value fr

PHP json_encode - JSON_FORCE_OBJECT 混合对象和数组输出

javascript - 未捕获的类型错误 : Cannot read property 'owne

c# - 使用 C# 调用 json

json - 雅虎财经全币种报价 API 文档

php - 如何防止 json_encode() 删除包含无效字符的字符串

c# - JavaScriptSerializer 可以排除具有空值/默认值的属性吗?