Как создать тот же формат JSON, который требуется для JqGrid:
Прямо сейчас мой Spring Controller может выдавать следующий вывод JSON:
{
"records":"5",
"total":"20",
"page":"1"
"rows":[
{"id":"1","cell":["1","john","smith"]},
{"id":"2","cell":["2","jane","adams"]}
]
}
Вот метод Spring Controller, который производит этот вывод:
@RequestMapping(value = "/json", method = RequestMethod.GET)
public @ResponseBody getUsers viewUsersAsJSON() {
logger.debug("Retrieving all users as JSON");
UsersJsonDTO usersJsonDTO = new UsersJsonDTO();
usersJsonDTO.setPage("1");
usersJsonDTO.setRecords("5");
usersJsonDTO.setTotal("20");
ArrayList<RowJson> rowJsonList = new ArrayList<RowJson>();
for (UserRoleDTO userRoleDTO:userRoleServiceFacade.getAll()) {
RowJson rowJson = new RowJson();
rowJson.setId(userRoleDTO.getId().toString());
rowJson.setCell(userRoleDTO.getFirstName());
rowJson.setCell(userRoleDTO.getLastName());
rowJsonList.add(rowJson);
}
usersJsonDTO.setRows(rowJsonList);
return usersJsonDTO;
}
Вот пользователи JsonDTO:
public class UsersJsonDTO {
private String page;
private String total;
private String records;
private ArrayList<RowJson> rows;
...getters/setters etc...
}
Вот РоуДжсон:
public class RowJson {
private String id;
private List<String> cell;
public RowJson() {
cell = new ArrayList<String>();
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public List<String> getCell() {
return cell;
}
public void setCell(String cell) {
this.cell.add(cell);
}
}
Это те классы, которые необходимы для создания примера вывода, который я дал в начале этого вопроса. @ResponseBody автоматически преобразует возвращаемый объект в JSON. См. Spring Ajax Упрощения 3.0
Я хочу намного более понятную и простую реализацию. Я хочу что-то вроде этого (конечно, я пробовал это, и это не дает правильный вывод):
@RequestMapping(value = "/json", method = RequestMethod.GET)
public @ResponseBody getUsers viewUsersAsJSON() {
logger.debug("Retrieving all users as JSON");
UsersJsonDTO usersJsonDTO = new UsersJsonDTO();
usersJsonDTO.setPage("1");
usersJsonDTO.setRecords("5");
usersJsonDTO.setTotal("20");
usersJsonDTO.setRows(userRoleServiceFacade.getAll());
return usersJsonDTO;
}
Есть идеи? Спасибо за ваше время.
Мне также нравится выводить следующий формат:
{
"records":"5",
"total":"20",
"page":"1"
"rows":[
{"id":"1","cell":["id":"1","name":"john","lastname":"smith"]},
{"id":"2","cell":["id":"2","name":"jane","lastname":"adams"]}
]
}
Однако, когда я пытаюсь это сделать, я получаю следующие дополнительные фигурные скобки (между ячейкой и id):
{
"records":"5",
"total":"20",
"page":"1"
"rows":[
{"id":"1","cell":[{"id":"1","name":"john","lastname":"smith"}]},
{"id":"2","cell":[{"id":"2","name":"jane","lastname":"adams"}]}
]
}
Много вопросов, но я думаю, что они связаны.