Как упомянуто @chrsblck, оно связано с jackson-module- kotlin, проблема # 80
В версии 2.10.1 это не воспроизводимо, хотя имена сериализованных свойств отличается (префикс «is» не удаляется):
{"isFoo":true}
{"isFoo":1}
{"isFoo":"true"}
В более ранних версиях проблему можно исправить с помощью аннотации JsonProperty
:
data class Foo1(val isFoo: Boolean)
data class Foo2(@get:JsonProperty("foo") val isFoo: Int)
data class Foo3(@get:JsonProperty("foo") val isFoo: String)
{"foo":true}
{"foo":1}
{"foo":"true"}
Технически, именование не логического свойства isSomthing неверно и нарушает спецификацию JavaBeans. Джексон опирается на соглашения JavaBeans, поэтому он запутывается.
Если вы можете избежать такого именования, я бы посоветовал сделать это. В противном случае вы можете столкнуться с такими же проблемами при вызове классов Foo * из Java кода.