Jacksoのバージョン
compile 'com.fasterxml.jackson.core:jackson-databind:2.8.3'
jsonにマッピングするオブジェクトの定義
json→Enumの変換は@JsonCreatorアノテーションを設定したstaticメソッドで行う。Enum→jsonの変換は@JsonValueアノテーションを設定したメソッドで行う。
public class SampleBean { private Enum value; public Enum getValue() { return value; } public void setValue(final Enum value) { this.value = value; } } enum Enum { A(1), B(2), C(3),; private int value; Enum(final int value) { this.value = value; } @JsonValue public int toValue() { return value; } @JsonCreator public static Enum fromValue(int value) { return Arrays.stream(values()) .filter(v -> v.value == value) .findFirst() .orElseThrow(() -> new IllegalArgumentException(String.valueOf(value))); } }
jsonの内容
{"value": 2}
json→Beanに実装
final ObjectMapper objectMapper = new ObjectMapper(); final SampleBean bean = objectMapper.readValue("{\"value\": 2}", SampleBean.class); System.out.println("bean.getValue() = " + bean.getValue()); final String json = objectMapper.writeValueAsString(bean); System.out.println("json = " + json);
結果
bean.getValue() = B json = {"value":2}