今回は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であれば何を利用しても構わないかと思われます。
