コンストラクタを使った場合
- コンストラクタにJsonCreatorアノテーションを設定する。
- 引数には、JsonPropertyアノテーションを設定し、Jsonのキー名を指定する。
public class Sample {
public final String name;
public final short age;
@JsonCreator
public Sample(
@JsonProperty("name") final String name,
@JsonProperty("age") final short age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Sample{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
ファクトリメソッドを使った場合
ファクトリメソッドの場合には、コンストラクタに設定していたアノテーションをファクトリメソッドにそのまま持ってくれば良い。public class Sample {
public final String name;
public final short age;
private Sample(final String name, final short age) {
this.name = name;
this.age = age;
}
@JsonCreator
public static Sample create(
@JsonProperty("name") final String name,
@JsonProperty("age") final short age) {
return new Sample(name, age);
}
@Override
public String toString() {
return "Sample{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
動作結果
動作確認に使ったコードfinal ObjectMapper objectMapper = new ObjectMapper();
final Sample sample = objectMapper.readValue("{\"name\": \"なまえ\", \"age\": 100}", Sample.class);
System.out.println("sample = " + sample);
標準出力の結果
sample = Sample{name='なまえ', age=100}