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

时间:2017-05-01 15:16:47

标签: 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,
    "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");

我最简单的方法是读取对象的值并将它们分配给变量?我为不同的对象创建了自定义类,但我需要一种方法来获取值。 谢谢!

2 个答案:

答案 0 :(得分:-1)

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

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

答案 1 :(得分:-1)

如果您有"guiCarport", "guiRoof""guiShed"的自定义类。然后请创建一个类似下面的数据持有者

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

    //Getters and setters
}

现在您可以将响应direclty作为

传递到对象中

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

然后你可以获得单个对象,然后使用getter来获取它们的值。