您可以使用地图,以实现这一目标。在极端情况下(我的意思是,在情况下,你不希望创建任何类),如果你想创建这个JSON:
{
"sleep":{
"userInfo":{
"firstName":"Hans",
"lastName":"Schmidt",
"country":"Germany",
"city":"Berlin"
},
"settings":{
"setting2":"none",
"setting1":"y"
},
"program":{
"appVersion":"1.7",
"serverVersion":19,
"appName":"name"
},
"userType":"new"
}
}
你可以这样做:
Gson gson = new Gson();
Map<String, Object> finalObject= new HashMap<>();
Map<String, Object> sleep= new HashMap<>();
Map<String, Object> program= new HashMap<>();
Map<String, String> userInfo= new HashMap<>();
Map<String, Object> settings= new HashMap<>();
program.put("appName", "name");
program.put("appVersion", "1.7");
program.put("serverVersion", 19);
userInfo.put("firstName", "Hans");
userInfo.put("lastName", "Schmidt");
userInfo.put("city", "Berlin");
userInfo.put("country", "Germany");
settings.put("setting1", "y");
settings.put("setting2", "none");
sleep.put("program", program);
sleep.put("userType", "new");
sleep.put("userInfo", userInfo);
sleep.put("settings", settings);
finalObject.put("sleep", sleep);
System.out.println(gson.toJson(finalObject));
但是,正如在另一个答案中所说,经常建议创建POJO。
编辑
有为了做到这一点的另一种方式。使用的JSONObject类:
JsonObject finalJsonObject= new JsonObject();
JsonObject jsonSleep= new JsonObject();
JsonObject jsonProgram= new JsonObject();
JsonObject jsonUserInfo= new JsonObject();
JsonObject jsonSettings= new JsonObject();
jsonUserInfo.addProperty("firstName", "Hans");
jsonUserInfo.addProperty("lastName", "Schmidt");
jsonUserInfo.addProperty("country", "Germany");
jsonUserInfo.addProperty("city", "Berlin");
jsonSettings.addProperty("setting2", "none");
jsonSettings.addProperty("setting1", "y");
jsonProgram.addProperty("appVersion", "1.7");
jsonProgram.addProperty("serverVersion", 19);
jsonProgram.addProperty("appName", "name");
jsonSleep.add("userInfo", jsonUserInfo);
jsonSleep.add("settings", jsonSettings);
jsonSleep.add("program", jsonProgram);
jsonSleep.addProperty("userType", "new");
finalJsonObject.add("sleep", jsonSleep);
System.out.println(String.valueOf(finalJsonObject));
如果您发现您总是使用相同的代码,那么你应该创建类(以提高测绘和消除重复)。如果有几个类使用几次,可以使用这种方法(并避免创建您需要的每个类)。
问题是什么,gson会为你做这个工作吗? –
如果你想要一个你的json的pojo表示,那么你需要像你所建议的那样为不同的树级别设置不同的类。如果你不需要,你可能可能(我不知道Gson,但我认为它与Jackson非常相似),也可以使用maps/JSONObject实例和列表/ JSONArray实例的组合。 – Thomas
,你可以编写课程并相互实现,然后gson将完成这项工作 –