Java 如何在SpringMVC中为特定类定制JSON
我使用的是SpringMVC,有以下方法Java 如何在SpringMVC中为特定类定制JSON,java,spring,spring-mvc,jakarta-ee,Java,Spring,Spring Mvc,Jakarta Ee,我使用的是SpringMVC,有以下方法 @RequestMapping("/login") public @ResponseBody User login(User user) { // some operation here .... return user; } 在大多数情况下,SpringMVC以适当的方式将对象转换为JSON。但是,有时可能需要自定义JSON。在哪里可以自定义所有用户对象的JSON。我希望将用户对象转换为JSON的行为在所有方面都是一致的。我想一个监听
@RequestMapping("/login")
public @ResponseBody User login(User user) {
// some operation here ....
return user;
}
在大多数情况下,SpringMVC以适当的方式将对象转换为JSON。但是,有时可能需要自定义JSON。在哪里可以自定义所有用户对象的JSON。我希望将用户对象转换为JSON的行为在所有方面都是一致的。我想一个监听器或接口可以做到这一点。这种解决方案存在吗
如果我要转换的对象是第三方类的实例怎么办?我无法在类定义中自定义它,因为我没有源代码…默认情况下,Spring使用Jackson序列化和反序列化JSON。您可以在
用户
类型和提供程序上使用Jackson的@JsonSerialize
注释,该实现根据需要执行序列化。Spring默认使用Jackson对JSON进行序列化和反序列化。您可以在您的用户
类型和提供者上使用Jackson的@JsonSerialize
注释JsonSerializer
实现,该实现根据需要执行序列化。下面给出了一个将json数组反序列化到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;
-----------
}
将数组列表转换为json数组。首先将以下bean添加到springServlet.xml
<bean name="jsonView"
class="org.springframework.web.servlet.view.json.JsonView">
<property name="contentType">
<value>text/html</value>
</property>
</bean>
文本/html
然后从控制器返回arraylist,如下所示
Map<String, Object> filteredMap = new LinkedHashMap<String, Object>();
List<Accountdb> filteredList;
------filteredMap logic -----------
filteredAccountMap.put("rows", filteredList);
return new ModelAndView("jsonView", filteredMap);
Map filteredMap=newlinkedhashmap();
列表过滤器列表;
------filteredMap逻辑-----------
filteredAccountMap.put(“行”,filteredList);
返回新的ModelAndView(“jsonView”,filteredMap);
下面是一个将json数组反序列化到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;
-----------
}
将数组列表转换为json数组。首先将以下bean添加到springServlet.xml
<bean name="jsonView"
class="org.springframework.web.servlet.view.json.JsonView">
<property name="contentType">
<value>text/html</value>
</property>
</bean>
文本/html
然后从控制器返回arraylist,如下所示
Map<String, Object> filteredMap = new LinkedHashMap<String, Object>();
List<Accountdb> filteredList;
------filteredMap logic -----------
filteredAccountMap.put("rows", filteredList);
return new ModelAndView("jsonView", filteredMap);
Map filteredMap=newlinkedhashmap();
列表过滤器列表;
------filteredMap逻辑-----------
filteredAccountMap.put(“行”,filteredList);
返回新的ModelAndView(“jsonView”,filteredMap);
感谢您的及时回复。但是如果我要转换的对象是第三方类的实例呢?我无法在类定义中自定义它,因为我没有源代码…@user2719693 Jackson提供了一个名为mixin的功能。为一个单独的类添加注释,并将其注册为User
类的模板。您需要向Spring提供自己的自定义配置的ObjectMapper
。感谢您的及时回复。但是如果我要转换的对象是第三方类的实例呢?我无法在类定义中自定义它,因为我没有源代码…@user2719693 Jackson提供了一个名为mixin的功能。为一个单独的类添加注释,并将其注册为User
类的模板。您需要向Spring提供自己的自定义配置的ObjectMapper
。