Jackson は 'is' を削除してプリミティブ ブール フィールドの名前を変更します 質問する

Jackson は 'is' を削除してプリミティブ ブール フィールドの名前を変更します 質問する

これは重複している可能性があります。しかし、私の問題に対する解決策を見つけることができません。

授業がある

public class MyResponse implements Serializable {

    private boolean isSuccess;

    public boolean isSuccess() {
        return isSuccess;
    }

    public void setSuccess(boolean isSuccess) {
        this.isSuccess = isSuccess;
    }
}

ゲッターとセッターは Eclipse によって生成されます。

別のクラスでは、値を true に設定し、JSON 文字列として書き込みます。

System.out.println(new ObjectMapper().writeValueAsString(myResponse));

JSON では、キーは として表されます{"success": true}

キーをそれisSuccess自体にしたいです。Jackson はシリアル化中に setter メソッドを使用していますか? キーをフィールド名自体にするにはどうすればいいですか?

ベストアンサー1

これは少し遅い回答ですが、このページにアクセスする他の人にとっては役立つかもしれません。

ジャクソンがJSONにシリアル化するときに使用する名前を変更する簡単な解決策は、@Jsonプロパティ注釈なので、例は次のようになります。

public class MyResponse implements Serializable {

    private boolean isSuccess;

    @JsonProperty(value="isSuccess")        
    public boolean isSuccess() {
        return isSuccess;
    }

    public void setSuccess(boolean isSuccess) {
        this.isSuccess = isSuccess;
    }
}

これは として JSON にシリアル化されます{"isSuccess":true}が、ゲッター メソッド名を変更する必要がないという利点があります。

この場合、アノテーションを次のように記述することもできます。要素@JsonProperty("isSuccess")は1つだけです。value

おすすめ記事