如何在java中读取嵌套json对象的值
我正在尝试用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,
{
"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将被转换为这些对象。