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

Kotlin Spring Boot Jackson反序列化报错:无法解析AllScore类型

问题分析与解决方案

错误原因

你定义的AllScore实体和JSON中scores字段的结构完全不匹配,导致Jackson无法完成反序列化:

  • JSON里的scores是二维数组:外层数组的每个元素仍是一个数组,内层数组包含多个{c1, c2, [title]}格式的对象
  • 你当前把scores声明为List<AllScore>,试图将每个内层数组映射为包含两个HashMap的AllScore对象,这和JSON结构完全冲突,所以抛出MismatchedInputException

正确实体定义

1. 定义单个分数项实体

对应JSON中内层数组的每个对象:

data class ScoreItem(
    val c1: String?,
    val c2: String?,
    val title: String? // 可选字段,部分对象无该属性
)

2. 修改LiveEventInfo的scores字段类型

将scores改为匹配二维数组的List<List<ScoreItem>>,同时补充原JSON中存在的subscores字段:

data class LiveEventInfo(
    var eventId: Long?,
    var timer: String?,
    var timerSeconds: Long?,
    var timerDirection: Long?,
    var scoreFunction: String?,
    var scoreComment: String?,
    var scoreCommentTail: String?,
    var scores: List<List<ScoreItem>>?,
    var subscores: List<*>? // 原JSON中存在该空数组字段,需声明避免反序列化警告
)

额外说明

如果需要将内层数组的元素映射到类似matchScore/timeScore的自定义结构,你需要编写自定义Jackson反序列化器,手动处理数组到对象的映射逻辑。但优先保证实体结构和JSON完全匹配,是解决这类反序列化错误的基础。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 17:03:31