Serialization @@Controller@RequestMapping上的JsonSerialize

Serialization @@Controller@RequestMapping上的JsonSerialize,serialization,spring-mvc,jackson,Serialization,Spring Mvc,Jackson,我将从@Controller返回一个Java对象,但我想在这个特定方法上调用一个Jackson序列化程序。目前还没有给出错误,但是序列化程序也没有被调用。另一种方法是在返回对象的类上附加@JsonSerialize,但我想知道是否需要对以下代码进行一些更改以使其正常工作: @JsonSerialize(using=SimpleShiftAllocSerializer.class, as=HashMap.class) @RequestMapping(value = "/shifts/readAll

我将从@Controller返回一个Java对象,但我想在这个特定方法上调用一个Jackson序列化程序。目前还没有给出错误,但是序列化程序也没有被调用。另一种方法是在返回对象的类上附加@JsonSerialize,但我想知道是否需要对以下代码进行一些更改以使其正常工作:

@JsonSerialize(using=SimpleShiftAllocSerializer.class, as=HashMap.class)
@RequestMapping(value = "/shifts/readAlloc.json", method = RequestMethod.GET)
public @ResponseBody
Map<String, ? extends Object> readAlloc(HttpServletRequest request,
        HttpServletResponse response) {
    // ...
    return someObjectToSerialise;
}
@JsonSerialize(使用=SimpleShiftAllocSerializer.class,as=HashMap.class)
@RequestMapping(value=“/shifts/readAlloc.json”,method=RequestMethod.GET)
公共@ResponseBody
Map readAlloc(HttpServletRequest请求,
HttpServletResponse(响应){
// ...
返回一些对象进行序列化;
}

假设您使用的是mvc命名空间配置,如果类路径上有jackson,org.springframework.http.converter.json.MappingJacksonHttpMessageConverter将自动注册为HttpMessageConverter

AnnotationDrivenBenDefinitionParser:312

因此,当@ResponseBy注释控制器方法返回时,它会检查是否有任何已注册的HttmMessageConverter支持返回的类型和ContentType(HttpMessageConverter.canWrite()),如果有,将调用其写入方法

它不认为Jackson消息转换支持

Map<String, ? extends Object>
Map

要么将该映射放入包装器bean(带有json注释),要么实现您自己的HttpMessageConverter(别忘了注册它)

假设您使用的是mvc命名空间配置,如果jackson在类路径上可用,org.springframework.http.converter.json.MappingJacksonHttpMessageConverter将自动注册为HttpMessageConverter

AnnotationDrivenBenDefinitionParser:312

因此,当@ResponseBy注释控制器方法返回时,它会检查是否有任何已注册的HttmMessageConverter支持返回的类型和ContentType(HttpMessageConverter.canWrite()),如果有,将调用其写入方法

它不认为Jackson消息转换支持

Map<String, ? extends Object>
Map

要么将该映射放在WrapperBean中(带有json注释),要么实现您自己的HttpMessageConverter(别忘了注册)

谢谢,我已经在我的root-context.xml中定义了一个自定义Jackson转换器,并且该通用映射类型正在序列化为json。我的问题是,我提供的Jackson serialiser没有被调用-我没有收到任何错误消息,JSON输出不随@JsonSerialize.MappingJacksonHttpMessageConverter而改变,除非Accept请求头是application/JSON。是的,它似乎无论如何都会返回这个消息。。。我刚刚在一个单独的类中转换了我的对象并返回它们。我意识到不应该使用Jackson的序列化程序来转换数据,因为更改为不同的JSON库将意味着您的控制器将返回无效的JSON!谢谢你给了我一些提示。谢谢,我已经在我的root-context.xml中定义了一个定制的Jackson转换器,这个通用映射类型正在序列化为JSON。我的问题是,我提供的Jackson serialiser没有被调用-我没有收到任何错误消息,JSON输出不随@JsonSerialize.MappingJacksonHttpMessageConverter而改变,除非Accept请求头是application/JSON。是的,它似乎无论如何都会返回这个消息。。。我刚刚在一个单独的类中转换了我的对象并返回它们。我意识到不应该使用Jackson的序列化程序来转换数据,因为更改为不同的JSON库将意味着您的控制器将返回无效的JSON!谢谢你给了我一些建议。