我目前正在尝试使用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);
红色下划线似乎也出现了错误。
答案 0 :(得分:0)
解决!
实际问题是当我尝试将UserSerializer传递给addSerializer时,我经常遇到错误。我刚刚意识到我导入了错误的JsonSerializer。我导入了databind.JsonSerializer而不是map.JsonSerializer。
:)