You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin使用RestTemplate如何正确反序列化包含对象的数组结构JSON

问题原因

接口返回的JSON根结构是数组类型,而你代码中指定的反序列化目标类型是AbcdResponse单个对象,二者结构不匹配,因此Jackson反序列化时直接抛出类型不匹配异常。
同时你定义的AbcdResponse结构也不符合接口返回的对象结构:接口返回的数组元素直接携带source字段,没有嵌套obj层级,该类不适用于当前接口的返回解析。

解决方案

直接指定反序列化目标为和接口结构匹配的DaDataAddress数组类型即可,示例代码如下:

// 指定反序列化类型为DaDataAddress数组
val addressArray = restTemplate.postForObject<Array<DaDataAddress>>(
    "/address",
    listOf(value).let { JsonHttpEntity(it) }
)
// 取数组第一个元素即为目标对象
val targetAddress = addressArray?.firstOrNull()

如果你的业务场景要求必须使用统一的AbcdResponse包装类接收,可以为AbcdResponse自定义Jackson反序列化器,主动读取外层数组的第一个元素并赋值给obj字段,该方案侵入性较高,非全局统一处理场景不推荐使用。

内容的提问来源于stack exchange,提问作者NeverSleeps

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 09:06:07