如何在SpringMVC中为某个类自定义JSON
我正在使用SpringMVC并具有以下方法。
@RequestMapping("/login") public @ResponseBody User login(User user) { // some operation here .... return user; }
在大多数情况下,SpringMVC以适当的方式将对象转换为JSON。 但有时您可能需要自定义JSON。 我在哪里可以为所有User对象自定义JSON。 我希望将User对象转换为JSON的行为全面一致。 我猜一个监听器或接口可以实现这一点。 这种解决方案存在吗?
PS。 如果我想转换的对象是第三方类的实例怎么办? 我无法在类定义中自定义它,因为我没有源代码…
Spring默认使用Jackson来序列化和反序列化JSON。 您可以在User
类型上使用Jackson的@JsonSerialize
注释,并提供一个JsonSerializer
实现,它可以根据需要执行序列化。
下面发布了一个将json Array反序列化为Arraylist的示例
@RequestMapping(value = "/mapJsonObjects", method = RequestMethod.POST) public static ModelAndView parseJSONObjects(@RequestParam String jsonList,HttpServletRequest request, HttpServletResponse response) throws Exception { JSONParser parser=new JSONParser(); ArrayList filteredList = new ArrayList(); Object obj = parser.parse(jsonList); JSONArray newList = (JSONArray)obj; filteredList = newList; -----------
}
将数组List转换为json数组。 首先将以下bean添加到springServlet.xml
text/html
然后从控制器返回如下所示的arraylist
Map filteredMap = new LinkedHashMap(); List filteredList; ------filteredMap logic ----------- filteredAccountMap.put("rows", filteredList); return new ModelAndView("jsonView", filteredMap);