Java Jackson 2.0加力燃烧室问题,缺少节点

Java Jackson 2.0加力燃烧室问题,缺少节点,java,json,jackson,deserialization,Java,Json,Jackson,Deserialization,我在连接杰克逊的加力模块时遇到了一些问题。下面的测试用例最能概括这个问题。为冗长的例子道歉;为了做这个练习,我试着把它尽量简短。当您注释掉注册模块的行时,测试工作,当您将其保留在中时,测试失败 我使用Jackson 2.1.1进行注释、核心和加力 如果您有任何想法,我将不胜感激 谢谢 帽子 我有一个类似的问题,我是这样解决的: 新建加力燃烧模块()。setUseOptimizedBeanDeserializer(false) 问题是,也许正因为如此,我看不到加力燃烧室的性能改进…我可以试着看看会

我在连接杰克逊的加力模块时遇到了一些问题。下面的测试用例最能概括这个问题。为冗长的例子道歉;为了做这个练习,我试着把它尽量简短。当您注释掉注册模块的行时,测试工作,当您将其保留在中时,测试失败

我使用Jackson 2.1.1进行注释、核心和加力

如果您有任何想法,我将不胜感激

谢谢

帽子


我有一个类似的问题,我是这样解决的:

新建加力燃烧模块()。setUseOptimizedBeanDeserializer(false)


问题是,也许正因为如此,我看不到加力燃烧室的性能改进…

我可以试着看看会出现什么错误,但值得注意的是,加力燃烧室通常不会对基于树模型的访问速度有太大帮助。为什么?因为它们不使用基于反射的getter/setter访问,所以没有太多需要优化的地方


在您的示例代码中,第二部分(从树模型转换为POJO)应该有一些加速,因为这是通过常规访问实现的。只是不适用于第一部分。

在我看来,Jackson 2.2.0和加力燃烧室模块通过了此测试。也许你们遇到的潜在问题已经解决了?
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.module.afterburner.AfterburnerModule;
import org.junit.Test;

import java.io.IOException;

import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;

public class AfterburnerTest {

    @Test
    public void mapOccupancyNoMaxAdults() throws IOException {

        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.registerModule(new AfterburnerModule());

        final JsonNode node = objectMapper.readTree(
                "{" +
                    "\"max\":3," +
                    "\"adults\": {" +
                        "\"min\":1" +
                    "}," +
                    "\"children\":{" +
                        "\"min\":1," +
                        "\"max\":2" +
                    "}" +
                "}");

        final Occupancy occupancy = objectMapper.reader(Occupancy.class).readValue(node);

        assertNull(occupancy.getAdults().getMax());
        assertNotNull(occupancy.getChildren().getMax());


    }

    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class Occupancy {

        private Integer max;
        private Guests adults;
        private Guests children;

        public Occupancy() {
        }

        public Occupancy(Integer max, Guests adults, Guests children) {
            this.max = max;
            this.adults = adults;
            this.children = children;
        }

        public Integer getMax() {
            return max;
        }

        public Guests getAdults() {
            return adults;
        }

        public Guests getChildren() {
            return children;
        }

    }

    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class Guests {

        private Integer min;
        private Integer max;

        public Guests() {
        }

        public Guests(Integer min, Integer max) {
            this.min = min;
            this.max = max;
        }

        public Integer getMin() {
            return min;
        }

        public Integer getMax() {
            return max;
        }

    }

}