Rest 使用Jackson和Guice自定义序列化程序和反序列化程序

Rest 使用Jackson和Guice自定义序列化程序和反序列化程序,rest,jersey,jackson,jax-rs,guice,Rest,Jersey,Jackson,Jax Rs,Guice,我目前正在尝试添加一个自定义序列化程序和反序列化程序,用于使用Jackson Guice和Jersey的REST API。我一直在尝试使用对象映射器和JacksonJsonProvider将它们链接起来。如何在不向User类添加注释的情况下执行此操作 public class UserSerializer extends JsonSerializer<User>{ @Override public void serialize(User value, JsonGen

我目前正在尝试添加一个自定义序列化程序和反序列化程序,用于使用Jackson Guice和Jersey的REST API。我一直在尝试使用对象映射器和
JacksonJsonProvider
将它们链接起来。如何在不向
User
类添加注释的情况下执行此操作

public class UserSerializer extends JsonSerializer<User>{

    @Override
    public void serialize(User value, JsonGenerator jgen, SerializerProvider provider)
            throws IOException, JsonProcessingException {
        jgen.writeStartObject();
        jgen.writeStringField("name",value.getName());
        jgen.writeStringField("email",value.getEmail());
        jgen.writeStringField("first-name",value.getFirstName());
        jgen.writeStringField("last-name", value.getLastName());
        jgen.writeStringField("key",value.getKey().toString());
        jgen.writeObjectField("type",value.getType());
        jgen.writeEndObject();
    }
}
但是,
addSerializer
似乎也有错误,它带有红色下划线

解决了

实际的问题是,当我尝试将UserSerializer传递给addSerializer时,经常会出现错误。我刚刚意识到我输入了错误的JsonSerializer。我导入了databind.JsonSerializer,而不是map.JsonSerializer

:)

解决了

实际的问题是,当我尝试将UserSerializer传递给addSerializer时,经常会出现错误。我刚刚意识到我输入了错误的JsonSerializer。我导入了databind.JsonSerializer,而不是map.JsonSerializer


:)

是否有任何特殊原因不向
用户
类添加注释?因为这样我就必须在另一个项目中包含依赖项。要使用批注。请确保您的Jackson主要版本一致,即您没有同时使用fasterxml和CodeHause是否有任何特殊原因不向
用户
类添加批注?因为这样我就必须在另一个项目中包含依赖项。要使用注释,请确保您的主要版本一致,即您没有同时使用fasterxml和codehaus
ObjectMapper mapper = new ObjectMapper();
SimpleModule test = new SimpleModule(null, null);
test.addSerializer(User.class,new UserSerializer());
mapper.registerModule(test);
JacksonJsonProvider provider = new JacksonJsonProvider(mapper);
bind(JacksonJsonProvider.class).toInstance(provider);