タイトルの件、ハマりまくったので書き溜めておきます。
一応中身も軽く書きましたが、もはや目次だけ読めば解決するレベルです。。
問題
概要

Spring BootでJSONを扱うときにもお世話になるJSONライブラリのJackson。
Kotlinで使用する際に、Boolean型のプロパティの名前がisで始まると、シリアライズした際にプロパティ名からisが除去されてしまうんじゃ。
@JsonPropertyで名前指定してもダメ

例えば、下記クラスをJSON文字列に変換すると、

下記のようにプロパティ名からisが取れてcrazyになってしまうんじゃ。。
{
"crazy": true
}

@JsonPropertyで名前を指定していてもダメだなんて困るわ。。
APIの戻りとかでisHogefugaとか普通に使いたいし困るわ。。
解決方法

JacksonをKotlinで使うとき、jackson-module-kotlinを使うと思うが、ドンピシャなIssueが下記の通り挙がっておったわ。。
Boolean property name starting with 'is' not serialized/deserialized properly · Issue #80 · FasterXML/jackson-module-kotlin
Hi, I'm experiencing issues with a boolean property which name starts with 'is'. While the getter doesn't get prefixed by kotlin, it seems that ...

既にマージされてるわね。
助かるわ。
jackson-module-kotlinのバージョンを2.10.1に上げる

それだけじゃ。
Gradleなら
implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.10.1")
Mavenなら
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-kotlin</artifactId>
<version>2.10.1</version>
</dependency>
関連情報
Spring Bootと使用する場合

Spring Bootを使用しているなら依存関係の定義でjackson-module-kotlinのバージョンを省略できるが、Spring Bootの2.2.2.RELEASEならjackson-module-kotlinのバージョンは2.10.1になるようじゃ。

2.2.1.RELEASEだとjackson-module-kotlinのバージョンは2.10.0になるようね。その場合は、明示的にバージョン(2.10.1)を指定する必要があるわね。
コメント