如何达到其他级别深度的json值?

The*_*Dr. 5 java json jackson gson

假设我有这个JSON文件:

{
    "level1" :{
        "type": "x"
    },
    "level2" :{
        "level3": {
            "level3": {
                "type" : "Y"
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

通过使用Jackson,如何获得type = Y值?

也可以通过使用 gson.jar

到目前为止,我尝试过的是:

ObjectMapper ob = new ObjectMapper();
String jsonContent = "...";
JsonNode root = ob.readTree(jsonContent)
root.path("level1");                      //return results fine
root.path("level2").path("level3");       //not return any results
root.path("level2/level3");               //not return any results
Run Code Online (Sandbox Code Playgroud)

Psh*_*emo 2

您的 JSON 无效,因为您没有用key:value逗号分隔对,如http://json.org,中所示

在此输入图像描述

所以将你的 JSON 更改为

{
    "level1" :{
        "type": "x"
    }, <-- add this comma
    "level2" :{
        "level3": {
            "level3": {
                "type" : "Y"
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在你应该可以使用

JsonNode root = new ObjectMapper().readTree(jsonContent);
root.path("level2")
      .path("level3")
        .path("level3");
Run Code Online (Sandbox Code Playgroud)

使用 Gson 你的代码看起来像

JsonObject root = new JsonParser().parse(jsonContent).getAsJsonObject();
root.getAsJsonObject("level2")
      .getAsJsonObject("level3")
        .getAsJsonObject("level3");
Run Code Online (Sandbox Code Playgroud)