如何在java中读取嵌套json对象的值

如何在java中读取嵌套json对象的值,java,json,gson,Java,Json,Gson,我正在尝试用java阅读以下json { "guiCarport": { "width": 500, "depth": 500, "height": 230 }, "guiRoof": { "gableRoof": false, "overhang": { "sides": 20, "front": 20, "back": 20 } }, "guiShed": { "shed": false,

我正在尝试用java阅读以下json

{
"guiCarport": {
    "width": 500,
    "depth": 500,
    "height": 230
},
"guiRoof": {
    "gableRoof": false,
    "overhang": {
        "sides": 20,
        "front": 20,
        "back": 20
    }
},
"guiShed": {
    "shed": false,
    "depth": 300,
    "doorPlacement": 0,
    "side": "Foran",
    "rotateDoor": false
}
}
到目前为止,我的java代码在java servlet中如下所示:

    String json = (String) request.getParameter("json");

    Gson gson = new Gson();
    JsonObject obj = gson.fromJson(json, JsonObject.class);

    JsonElement base = obj.get("guiCarport");
    JsonElement roof = obj.get("guiRoof");
    JsonElement shed = obj.get("guiShed");
对我来说,读取对象的值并将其分配给变量的最简单方法是什么?我已经为不同的对象创建了自定义类,但是我需要一种先获取值的方法。
谢谢

您可以先将json数据转换为HashMap。这样,您将获得值

  Type type = new TypeToken<Map<String, String>>(){}.getType();
  Map<String, String> myMap = gson.fromJson(jsonData, type);
Type Type=new-TypeToken(){}.getType();
Map myMap=gson.fromJson(jsonData,type);

如果您有用于
“guiCarport”、“guiRoof”
“guiShed”
的自定义类。然后,请制作一个如下所示的数据保持器

class ResponseHolder {
    private GuiCarportType guiCarport;
    private GuiRoofType guiRoof;
    private GuiShedType guiShed;

    //Getters and setters
}
现在,您可以将响应直接传递到对象中

ResponseHolder-holder=gson.fromJson(jsonData,ResponseHolder.class)


然后你可以用getter获取单个对象,并依次获取它们的值。

为什么你不能立即将其转换为自定义类,而不是转换为
JsonObject
?我该怎么做?将你的json放在这个站点上,选择
Gson
,然后单击zip,它将从你的json生成java类。然后只需使用
gson.fromJson(json,Example.class)
(如果您想重命名生成的
Example.java
),您的json将被转换为这些对象。