Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在SpringMVC中为特定类定制JSON_Java_Spring_Spring Mvc_Jakarta Ee - Fatal编程技术网

Java 如何在SpringMVC中为特定类定制JSON

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的行为在所有方面都是一致的。我想一个监听

我使用的是SpringMVC,有以下方法

@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