ジャクソン - フィールド名の変更

1概要

このクイックチュートリアルでは、直列化時に** フィールド名を変更して別のjsonプロパティにマッピングする方法を説明します。

あなたがもっと深く掘り下げて あなたがジャクソン2 ですることができる** 他のクールなことを学びたいなら - メインのジャクソンチュートリアル に向かって進んでください。

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 の代わりに - strValue を得るように その出力を カスタマイズするには、単にgetterに注釈を付ける必要があります。

@JsonProperty("strVal")
public String getStringValue() {
    return stringValue;
}

さて、シリアライゼーションでは、 希望の出力が得られる :

{"strValue":"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形式に準拠させるためにマーシャリングすることは一般的な作業です。

これらすべての例とコードスニペットの実装は、https://github.com/eugenp/tutorials/tree/master/jackson#readme にあります。 - これはEclipseベースのプロジェクトです。そのままインポートして実行するのは簡単です。