【发布时间】:2013-06-29 20:57:07
【问题描述】:
我使用Spring MVC 并返回JSON 作为响应。我想创建一个通用的JSON 响应,我可以在其中输入任何类型并希望响应看起来像这样
{
status : "success",
data : {
"accounts" : [
{ "id" : 1, "title" : "saving", "sortcode" : "121212" },
{ "id" : 2, "title" : "current", "sortcode" : "445566" },
]
}
}
所以我创建了一个Response<T> 对象
public class Response<T> {
private String status;
private String message;
T data;
...
...
}
- 这是正确的做法,还是有更好的方法?
- 如何在
Spring控制器中使用此响应对象来返回空响应对象和/或填充响应对象。
提前感谢总经理
更新:
为了获得与上述类似的JSON 输出,即在JSON 中使用“accounts”键,我必须在控制器中使用Response<Map<String, List<Account>>>:
@RequestMapping(value = {"/accounts"}, method = RequestMethod.POST, produces = "application/json", headers = "Accept=application/json")
@ResponseBody
public Response<Map<String, List<Account>>> findAccounts(@RequestBody AccountsSearchRequest request) {
//
// empty accounts list
//
List<Account> accountsList = new ArrayList<Account>();
//
// response will hold a MAP with key="accounts" value="List<Account>
//
Response<Map<String, List<Account>>> response = ResponseUtil.createResponseWithData("accounts", accountsList);
try {
accountsList = searchService.findAccounts(request);
response = ResponseUtil.createResponseWithData("accounts", accountsList);
response.setStatus("success");
response.setMessage("Number of accounts ("+accounts.size()+")");
} catch (Exception e) {
response.setStatus("error");
response.setMessage("System error " + e.getMessage());
response.setData(null);
}
return response;
}
这是正确的做法吗?即为了在JSON 输出中获取“帐户”键?
【问题讨论】:
-
这是一个有用的通用响应实体。
标签: java json spring spring-mvc