我一直在尝试使用 @JacksonInject 和 @JsonCreator 将 ObjectMapper 注入到 Jackson 反序列化对象中,但无济于事。杰克逊似乎坚持认为注入的类是可反序列化的。我正在使用杰克逊 2.6.1。顺便说一句,这在字段上使用 @JsonProperty 和 @JacksonInject 而不是使用 @JsonCreator 时有效。难道我做错了什么?
我有以下测试代码:
public class MyTest {
@Test
public void test_roundtrip_shouldSucceed() throws Exception {
ObjectMapper mapper = new ObjectMapper();
mapper.setInjectableValues(new InjectableValues.Std().addValue(ObjectMapper.class, mapper));
MyObj original = new MyObj(mapper, 10);
String serialized = mapper.writeValueAsString(original);
System.out.println(serialized);
MyObj returned = mapper.readValue(serialized, MyObj.class);
assertEquals(original.val, returned.val);
}
public static class MyObj {
private final ObjectMapper mapper;
private final long val;
@JsonCreator
public MyObj(
@JacksonInject("mapper") ObjectMapper mapper,
@JsonProperty("val") long val) {
this.mapper = …Run Code Online (Sandbox Code Playgroud)