如何使 Jackson@JsonUnwrapped
注释在 Kotlin 数据类中正确工作以进行反序列化?
除了为此类创建自定义反序列化器并将其作为模块添加到对象映射器之外,我没有找到任何简单的解决方案。
这是我的代码示例:
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY)
@JsonNaming(PropertyNamingStrategies.LowerCamelCaseStrategy::class)
@Schema(description = "Customer Details", allOf = [Address::class, Person::class])
data class CustomerDetails(
@JsonUnwrapped val addressDetails: Address?,// address related fields
@JsonUnwrapped val personDetails: Person? // person related fields
)
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY)
@JsonNaming(PropertyNamingStrategies.LowerCamelCaseStrategy::class)
data class Address(
val houseNumber: Int?,
val streetName: String?,
val city: String?
)
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY)
@JsonNaming(PropertyNamingStrategies.LowerCamelCaseStrategy::class)
data class Person(
val firstName: String?,
val lastName: String?,
val initials: String?
)
由于 @Schema 注释,swagger 页面运行良好。由于 @JsonUnwrapped 注释,对象到 JSON 的序列化按预期工作。但反序列化失败并出现错误:com.fasterxml.jackson.databind.exc.InvalidDefinitionException:无法将 Creator 属性“属性名称”定义为@JsonUnwrapped
:组合尚不支持