Spring, Kotlin a JSON decoding errors

Nedávno jsem narazil na zajímavý problém. Měl jsem dvě služby, kdy se přes REST rozhraní zavolá jedna, ta provolá druhou a vrátí výsledek. Původní odpověď vypadala takto:

data class GetAchievementsResponse(
        achievements: List<AchievementInfo>
)

Jakmile jsem ale objekt změnil takto:

data class GetAchievementsResponse(
        val aAchievements: List<AchievementInfo>,
        val rAchievements: List<AchievementInfo>
)

Začal jsem dostávat tyto chyby:

JSON decoding error: Instantiation of [simple type, class cz.vitfo.client.GetAchievementsResponse] value failed for JSON property aAchievements due to missing (therefore NULL) value for creator parameter aAchievements which is a non-nullable type
JSON decoding error: Cannot deserialize instance of `java.util.ArrayList` out of FIELD_NAME token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList` out of FIELD_NAME token

Nakonec jsem přišel na to, že z nějakého důvodu com.fasterxml.jackson v tomto případě nezvládá camel case názvy proměnných. Řešením bylo toto pojmenování:

data class GetAchievementsResponse(
        val a_achievements: List<AchievementInfo>,
        val r_achievements: List<AchievementInfo>
)

Napsat komentář