小编Jad*_*adN的帖子

使用@JacksonInject和@JsonCreator将ObjectMapper注入到反序列化对象中

我一直在尝试使用 @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)

java serialization json jackson deserialization

5
推荐指数
0
解决办法
2900
查看次数

标签 统计

deserialization ×1

jackson ×1

java ×1

json ×1

serialization ×1