You need to enable JavaScript to run this app. Spring Boot REST API 如何传递含键值对列表的对象及解决反序列化报错
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot REST API 如何传递含键值对列表的对象及解决反序列化报错

问题修复方案

错误根因

  • 字段拼写不匹配:前端提交的字段名为anwsers,和后端AnswerResponse实体定义的answers字段拼写不一致
  • 数据结构完全不符合反序列化要求:前端传入的答案值是{1: 2, 2: 1}格式的普通对象,且被手动包为字符串类型;但后端要求该字段为AnswerPair实体组成的数组,Jackson解析时遇到大括号开头的对象标记(START_OBJECT),无法将其反序列化为ArrayList<AnswerPair>类型,直接抛出解析错误。

修正后的前端实现

完全对齐后端实体的字段结构、类型、命名规则构造请求:

const examRequest = {
  examId: 10,
  timer: 100,
  // 修正字段拼写为answers,结构改为AnswerPair对象组成的数组
  answers: [
    { questionId: 1, keyAnswer: 2 },
    { questionId: 2, keyAnswer: 1 }
  ]
};

const submitData = (examRequest) => {
  const url = "/exams/submit";
  return axios.post(url, examRequest);
};

常见踩坑提醒

  • 不需要手动将请求对象序列化为字符串:axios会自动将传入的JS对象转换为合规的JSON格式传递,手动拼接的字符串很容易出现JSON格式不合法、结构不匹配的问题
  • 字段名必须和后端实体属性完全一致:包含拼写、大小写完全匹配,否则会因严格字段匹配规则导致后端接收的参数为null
  • 数值类型保持对齐:后端定义的Long类型字段,前端传入整数即可,无需额外做类型转换

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.31 07:54:03