我正在使用SpringMVC并使用以下方法。
@RequestMapping("/login")
public @ResponseBody User login(User user) {
// some operation here ....
return user;
}
在大多数情况下,SpringMVC以适当的方式将对象转换为JSON。但有时您可能需要自定义JSON。我在哪里可以为所有User对象自定义JSON。我希望将User对象转换为JSON的行为全面一致。我猜一个监听器或接口可以实现这一点。这种解决方案是否存在?
PS。如果我要转换的对象是第三方类的实例怎么办?我无法在类定义中自定义它,因为我没有源代码...
答案 0 :(得分:1)
Spring默认使用Jackson来序列化和反序列化JSON。您可以在@JsonSerialize
类型和提供商User
实施中使用杰克逊的JsonSerializer
注释,根据需要执行序列化。
答案 1 :(得分:0)
下面发布了一个将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
<bean name="jsonView"
class="org.springframework.web.servlet.view.json.JsonView">
<property name="contentType">
<value>text/html</value>
</property>
</bean>
然后从控制器返回arraylist,如下所示
Map<String, Object> filteredMap = new LinkedHashMap<String, Object>();
List<Accountdb> filteredList;
------filteredMap logic -----------
filteredAccountMap.put("rows", filteredList);
return new ModelAndView("jsonView", filteredMap);