ジャクソン–フィールド名の変更
1. 概要
このクイックチュートリアルは、シリアル化でchange the name of a field to map to another JSON propertyする方法を示しています。
もっと深く掘り下げて、Jackson 2でできる他のクールなことを学びたい場合は、the main Jackson tutorialに進んでください。
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アノテーションを使用する方法を説明します。
これらすべての例とコードスニペットの実装は、my github projectにあります。