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}