科特林·杰克逊"missing type id property 'type' (for POJO property 'data');"



免责声明

我知道有很多帖子都有类似的问题,但没有解决方案对我有效。我从昨天开始就一直在尝试,尝试的次数太多了,无法在这里列出。我发布的是最新的尝试。

概述

我有一个服务,它向另一个服务发送请求,并需要对响应进行多态反序列化。

类别

这是我从其余通话中收到的格式。只有两处房产。

data class ExecutionPayload(
val type: ChangeRequestType,
val data: ExecutionData
)

CCD_ 1是多态位。

@JsonIgnoreProperties(ignoreUnknown = true)
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
@JsonSubTypes(
Type(value = UpdateNetworkConfigurationsExecutionData::class, name = "UpdateNetworkConfigurationsExecutionData")
)
sealed class ExecutionData

@JsonIgnoreProperties(ignoreUnknown = true)
data class UpdateNetworkConfigurationsExecutionData(
@JsonProperty("type") val updatedProfiles: List<UpdateSalesChannelProfileViewModel>,
@JsonProperty("type") val zoning: List<SoftZoningConfig>
) : ExecutionData()

详细信息

我将添加更多的上下文,这对您来说可能是显而易见的,但无论如何。

CCD_ 2将来将具有与CCD_ 3完全不同的数据结构的子通道。

愚蠢的示例

data class SomeOtherConfigurationUpdateExecutionData(
val updateSomethingHere: String,
val anotherPropertyUpdate: Int
val anExtraProperty: List<SomeConfig>
) : ExecutionData()

问题

无论我怎么努力,我都会犯这个错误。

ERROR com.somepackage.utils.Logger - CustomErrorConfig - org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error:
Could not resolve subtype of [simple type, class com.somepackage.ExecutionData]: missing type id property 'type' (for POJO property 'data');
nested exception is com.fasterxml.jackson.databind.exc.InvalidTypeIdException: Could not resolve subtype of [simple type, class com.somepackage.ExecutionData]:
missing type id property 'type' (for POJO property 'data')

我真的很感谢你的帮助。

附言:我是科特林和杰克逊的新手。

您需要做的第一件事是删除不必要的@JsonProperty("type"):

@JsonIgnoreProperties(ignoreUnknown = true)
data class UpdateNetworkConfigurationsExecutionData(
val updatedProfiles: List<UpdateSalesChannelProfileViewModel>,
val zoning: List<SoftZoningConfig>
) : ExecutionData()

除此之外,请记住typeJSON属性必须与@Typename属性匹配。这意味着它必须与UpdateNetworkConfigurationsExecutionData匹配。您的JSON必须类似于:

{
"type": // ChangeRequestType,
"data": {
"type": "UpdateNetworkConfigurationsExecutionData",
"updatedProfiles": [
// UpdateSalesChannelProfileViewModel objects
],
"zoning": [
// SoftZoningConfig objects
]
}
}

相关内容

  • 没有找到相关文章

最新更新