一个字段的多个JsonSerializers取决于Content-Type

时间:2018-11-29 07:29:33

标签: java json serialization jackson webserver

我有RESTful Web服务。例如,我有一个方法,可以使用具有不同内容类型的对象:

@Consumes({"application/vnd.RequestObjV1+json", "application/vnd.RequestObjV2+json"})
ResponseObj method(RequestObj requestObj);

ResponseObj包含即时字段InstantField。对于内容类型为application / vnd.RequestObjV1 + json的请求,我需要在几秒钟内序列化InstantField,而对于内容类型为application / vnd.RequestObjV2 + json的序列化,我需要以毫秒为单位。

有没有一种方法可以通过对字段的注释来做到这一点?像这样:

public class ResponseObj {
    .....

   @JsonSerialize(using = InstantSerializerForV1Type.class, InstantSerializerForV2Type.class)
   private Instant instantField;

    .....
}

还是我需要做其他事情?

我也试图在InstantSerializer类中获取内容类型,但是找不到如何做。

不希望仅出于一个字段而创建单独的服务器方法和类。

有什么方法可以让序列化程序根据请求中内容的类型来对Instant进行序列化?

1 个答案:

答案 0 :(得分:0)

您可以创建自定义序列化程序。并通过

访问http标头
@Autowire
HttpServletRequest request;

它是会话bean。