1

Jackson の Afterburner モジュールを接続する際に問題が発生しています。この問題は、以下のテスト ケースによって最もよく要約できます。例が長くなってしまい申し訳ありません。この演習では、できるだけ短くするようにしました。モジュールを登録する行をコメントアウトするとテストが機能し、そのままにしておくと失敗します。

アノテーション、コア、アフターバーナーに Jackson 2.1.1 を使用しています。

アイデアをいただければ幸いです。

ありがとう!

キャップ

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

    }

}
4

2 に答える 2

-1

同様の問題があり、次のように解決しました。

new AfterburnerModule().setUseOptimizedBeanDeserializer(false)

問題は、おそらくこれが原因で、Afterburner でパフォーマンスの向上が見られないことです...

于 2013-03-14T12:32:26.830 に答える