我有一个Spring 3控制器,它返回一个JSON对象 . 我正在使用@ResponseBody注释和jackson-mapper-asl jar,Spring将自动处理JSON转换 . 3个return语句返回不同的JSON格式 . 可以通过使用Object修改getPersonDetails方法的返回类型来处理这个问题,还是有更好的方法 .
@RequestMapping(value="/test", method=RequestMethod.GET)
public @ResponseBody List<Person> getPersonDetails() {
List<Person> listPerson = null;
try {
// Call to service and get the list of Person
listPerson = getPersonList();
if(CollectionUtils.isNotEmpty(listPerson)) {
// Return JSON object
//{"Name":"XYZ", "Age":25}
} else {
// Return JSON object
//{"InformationMessage":"No data found."}
}
} catch(final Exception e) {
// Return JSON object
// {"ExceptionMessage":"Exception in controller."}
}
}
5 回答
我会用
ResponseEntity<?>
你可以这样的事情
注意:这里没有在IDE中输入,任何语法错误都可以随意编辑 .
此外:没有必要通过“消息对象”来表明出现了问题 . 这就是HTTP状态代码的用途 .
我会去注入HttpServletResponse并使用
setStatus()
来指示错误,表示404
或500
. 此外,您可以使用getWriter().write("{\"ExceptionMessage\":\"Exception in controller.\"}")
向身体发送消息从控制器方法中抛出特定异常 . 例如,在您的情况下,如果列表为空,则为自定义PersonNotFoundException,对于未知错误,为ServiceException . 并通过返回类型为ResponseEntity的@ExceptionHandlers处理这些异常 .
控制器方法的返回类型应仅为List .
这将有助于您获得整洁的文档 .
尝试在spring中搜索如何使用ExceptionHandlers .
希望这能回答你的问题 .
您可以创建JResponse类并将数据保存到 .