GIG

赴くままに技術を。

JacksonでLombokを使ったBeanにマッピングできない

同じ轍を踏まないようにメモ。

事象

JSONファイルから設定を読み込むことをしたく、Jacksonを使い、アクセッサーメソッドの記述を省力化しようとLombokを使った。そのとき下記のように記載するとアクセッサーメソッドがスネークケースになって(実際スネークケースになる設定というわけではなく、頭文字を大文字にして繋げる仕様で、"_"だからそれに対応できなかっただけのような気がする気がする...)、アンマーシャルすることができないエラーが発生する。

f:id:hermesian:20160207222514p:plain

import lombok.Getter;
import lombok.Setter;

public class Bean {

    @Getter
    @Setter
    private Parent1 _parent1;

    public class Parent1 {

        @Getter
        @Setter
        private String _child1;

        @Getter
        @Setter
        private String _child2;

        @Getter
        @Setter
        private String _child3;
    }
}
対策

属性の接頭辞には、"_"を使用しないこと。

f:id:hermesian:20160207222521p:plain

import lombok.Getter;
import lombok.Setter;

public class Bean {

    @Getter
    @Setter
    private Parent1 parent1;

    public class Parent1 {

        @Getter
        @Setter
        private String child1;

        @Getter
        @Setter
        private String child2;

        @Getter
        @Setter
        private String child3;
    }
}
バージョン

pom.xmlの内容は下記。

...以上、省略....
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.7.0</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.6</version>
        </dependency>
...以下、省略....