使用Jackson和Guice定制Serializer和Deserializer

时间:2016-01-29 00:04:51

标签: rest jersey jackson jax-rs guice

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

User

这是我的Guice配置文件,Guice servlet上下文监听器。

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();
    }
}

然而,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); 红色下划线似乎也出现了错误。

1 个答案:

答案 0 :(得分:0)

解决!

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

:)