Создать JsonObject из @ResponseBody без использования библиотеки gson
@ResponseBody
возвращается
[{"id":1010,"name":"projectname2"}]
введите строку JSON
Но мне нужна следующая строка JSON
[{"id":1010,"name":"projectname2","age":"21"}]
Итак, как я могу соотнести возраст атрибута json по умолчанию?
Я использую Java-Spring-MVC рамки с Spring-JSON JAR
@RequestMapping(value = "/projectsByEmployeeId/list", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public List<Project> getProjectsByEmployeeId(
HttpServletRequest request) {
String filter = request.getParameter("filter");
FilterAttributes[] filterAttributes = null;
try {
filterAttributes = new ObjectMapper().readValue(filter,
FilterAttributes[].class);
} catch (Exception exception) {
logger.error("Filtering parameter JSON string passing failed",
exception);
}
if ((filterAttributes != null)
&& (!filterAttributes[0].getStringValue().isEmpty())) {
return utilityService.getProjectsByEmployeeId(44L);//this is an example id
} else {
return utilityService.getProjects();
}
}
2 ответа
Еще один способ сделать это - чистая обработка строк -
String json = "[{\"id\":1010,\"name\":\"projectname2\"}]";
json = json.substring(0, json.length() - 2); //strip the }]
String newJSON = json.concat(",\"age\": 21}]"); // add in the new key and end
System.out.println(newJSON); // [{"id":1010,"name":"projectname2","age": 21}]
Еще один способ сделать это (вы говорите, что используете JSONObject сейчас, а JSONObject НЕ являются библиотекой по умолчанию)
Возьми струну,
[{"id":1010,"name":"projectname2"}]
И преобразовать его в JSONObject.
После преобразования вы можете использовать JSONObject.append(), чтобы добавить к нему ключ "age" со значением "21".