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

API更新复杂对象时JSON与dynamic转换报BadRequest问题排查

代码中的问题及修正方案

核心问题分析

  • 未正确读取API响应内容:responseEvent.Content是HttpContent类型,直接传入JsonConvert.DeserializeObject会导致反序列化的是该对象的默认字符串表示(并非实际返回的JSON数据),后续生成的dynamic对象完全不符合预期。
  • 错误传递序列化后的JSON字符串:AddJsonBody方法的设计逻辑是接收对象并自动完成序列化操作,你传入已序列化的JSON字符串,会导致API收到的请求体是字符串的JSON序列化结果(比如原JSON被包裹成带引号的字符串),格式完全不符合API要求,直接触发BadRequest。

修正后的代码

var client = CreateRequest($"https://api.securevan.com/v4/events/{EventId}", out var requestEvent);
var responseEvent = await client.GetAsync(requestEvent);

// 先将HttpContent读取为真实的JSON字符串
var responseContent = await responseEvent.Content.ReadAsStringAsync();
dynamic eventJson = JsonConvert.DeserializeObject<dynamic>(responseContent);
eventJson.description = "API Test Event Updated";

// 直接传入dynamic对象,由AddJsonBody自动处理序列化逻辑
request.AddJsonBody(eventJson);

var response = await client.PutAsync(request);

额外注意点

  • 确认API的更新接口是否接受PUT请求(你描述里计划用POST,但代码实际调用的是PutAsync),如果API要求用POST,需要替换为PostAsync。
  • 建议添加响应状态码校验,比如responseEvent.EnsureSuccessStatusCode(),避免在API返回错误(如404、500)时继续执行后续无效操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 17:42:03