JSONのプロパティ名とJavaの変数名が違うとき

こんにちは、さるまりんです。

タイトルの通りなのですが、JSONのプロパティ名とJavaの変数名が異なる文字列のことがあります。

例えばこんなケースです。

公開日を表すJSONプロパティがrelease-dateと定義されています。

↓のような感じです。

{
    "release-date":"2020-11-16"
}

では、これを受けるJavaのプログラムはどうでしょう。

private String release-date;

↑これはNGです。Javaの変数名に-を含むことはできません。

変数を定義するにはこうですね。

private String releaseDate;

release-datereleaseDate、異なりますね。

JSONのプロパティ名にハイフンを使うのはありか?という議論もありそうですが、それはまた別の話として考えるとして、今はこの問題をどうしましょう?

こんな時は@JsonPropertyアノテーションでJSON側の名前の文字列を指定できます。

@JsonProperty("release-date")
private String releaseDate;

ちなみにこのreleaseDateですがデータベース上ではrelease_dateカラムに保存されていたりします。

システムや言語によって命名規則が違ったり、慣習が違ったりと様々です。

それらをうまく繋ぐことができる仕組みがあるっていうのが素敵です。

読んでくださってありがとうございます。

それではまた!