Java JSONからEnum型にマッピング

今回はJson(受信)からEnum型にマッピングさせる方法にみていきたいと思います。

サンプルコードを見ながら説明します。

サンプル

import com.fasterxml.jackson.annotation.JsonCreator;
import java.util.Arrays;

public enum Some {
    ENUM1("enum1"),
    ENUM2("enum2"),
    ENUM3("enum3");

    String some;

    Some(String some) {
        this.some = some;
    }

    @JsonCreator
    public static Some from(String jsonSome) {
        return Arrays.stream(values())
                .filter(some -> some.equals(jsonSome))
                .findFirst().orElseThrow(() -> new IllegalArgumentException());
    }
}
  • enum型にマッピングするにはjacksonを使います。
    • Springbootに含まれていると思いますので、特に依存性追加などは必要ないです。(古いバージョンの場合は必要)
  • JsonCreatorアノテーションがついているメソッドに対してJsonの値が渡されます。このメソッドでStringからEnum型に変換を行います。
  • 変換の方法としてstremを使いましたが、あくまでも戻り値の肩がEnumであれば何を利用しても構わないかと思われます。

コメントを残す