ジャクソン–フィールド名の変更
1. 概要
このクイックチュートリアルは、シリアル化時にフィールドの名前を変更して別のJSONプロパティにマップする方法を示しています。
より深く掘り下げて、Jackson 2でできる他のクールなことを学びたい場合は、メインのJacksonチュートリアルに進んでください。
2. シリアル化のフィールド名を変更する
単純なエンティティでの作業:
public class MyDto {
private String stringValue;
public MyDto() {
super();
}
public String getStringValue() {
return stringValue;
}
public void setStringValue(String stringValue) {
this.stringValue = stringValue;
}
}
シリアル化すると、次のJSONが生成されます。
{"stringValue":"some value"}
stringValueの代わりにstrVal を取得するようにその出力をカスタマイズするには、ゲッターに注釈を付けるだけです。
@JsonProperty("strVal")
public String getStringValue() {
return stringValue;
}
ここで、シリアル化すると、目的の出力が得られます。
{"strVal":"some value"}
簡単な単体テストで、出力が正しいことを確認する必要があります。
@Test
public void givenNameOfFieldIsChanged_whenSerializing_thenCorrect()
throws JsonParseException, IOException {
ObjectMapper mapper = new ObjectMapper();
MyDtoFieldNameChanged dtoObject = new MyDtoFieldNameChanged();
dtoObject.setStringValue("a");
String dtoAsString = mapper.writeValueAsString(dtoObject);
assertThat(dtoAsString, not(containsString("stringValue")));
assertThat(dtoAsString, containsString("strVal"));
}
3. 結論
特定のJSON形式に準拠するようにエンティティをマーシャリングすることは一般的なタスクです。この記事では、@JsonPropertyアノテーションを使用するだけでその方法を説明します。
これらすべての例とコードスニペットの実装は、mygithubプロジェクトにあります。