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

调用Events更新接口返回400:JSON无法转换为TheMoonshineCafe.Models.Event类型

问题根因及修复方案

  • 核心错误:请求Payload类型不匹配
    你前端editEvent函数的第二个参数定义为EventWithID[](数组类型),但后端PutEvent接口预期接收的是单个Event对象。给需要单个对象的接口传入数组,JSON反序列化第一步就会失败,你收到的报错提示BytePositionInLine: 1就是因为JSON首个字符是数组的[,而框架预期是对象的{,直接触发转换失败。
    修复:将editEvent的参数定义改为单个对象类型event: EventWithID,调用该函数时传入单个事件对象,不要传入数组。

  • 潜在错误:后端接口缺失[FromBody]注解
    ASP.NET Core处理PUT请求时,默认不会主动从请求体中读取JSON绑定到参数,需要显式给接收参数添加[FromBody]注解,否则框架会优先从路由、表单字段取值,找不到对应值就会报反序列化错误。
    修复:修改后端接口参数定义如下:

    public async Task<ActionResult<Event>> PutEvent(int id, [FromBody] Event @event)
    
  • 兼容问题:类型与日期格式不匹配

    1. 前端EventWithID类中字符串类型使用了大写String,建议改为TS标准的小写string;ticketPrice字段前后端分别为number和double,对齐类型可避免隐式转换异常。
    2. 前端Date类型序列化后的格式如果和后端DateTime的解析规则不兼容,也会触发反序列化失败,建议前端传值时将日期转换为UTC格式的ISO字符串,或者后端配置JSON序列化规则兼容前端的日期格式。

验证方法

打开浏览器F12开发者工具,切换到网络面板,找到对应的PUT请求查看请求Payload:如果Payload以[开头说明仍为数组格式,修复正常后Payload应以{开头,为单个对象结构,且字段和后端Event类的字段一一对应。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 13:27:03