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

ASP.NET Core Web API接收含JSON字符串参数的请求处理咨询

ASP.NET Core Web API处理JSON字符串字段400错误的解决方案

核心问题原因

400错误本质是jsonFileData字段的JSON字符串未正确处理,直接嵌套在请求JSON中破坏了整体结构,导致API的模型绑定失败。


具体处理方案

1. 对JSON字符串做转义处理

这是最直接的解决方式,需要将jsonFileData中的原始JSON内容转义为合法的JSON字符串:

  • 把双引号替换为\"
  • 把换行符替换为\n
  • 把反斜杠替换为\\

示例:
原始JSON内容:{"theme":"dark","fontSize":14}
转义后应为:"{\"theme\":\"dark\",\"fontSize\":14}"

2. 调整API的模型定义

如果不想让客户端做转义,可以修改API的接收模型,让框架自动处理原始JSON:

  • 使用JsonElement类型接收jsonFileData,它能直接解析嵌套的JSON对象:
public class ConfigRequest
{
    public int UserID { get; set; }
    public string JsonFileName { get; set; }
    public JsonElement JsonFileData { get; set; }
}

后续存入数据库时,可通过JsonFileData.ToString()将其转为字符串存储。

3. Swagger测试的正确输入方式

  • 如果模型用JsonElement类型,直接在Swagger请求体中嵌套JSON对象即可,Swagger会自动处理转义:
{ 
    "userID": 123,
    "jsonFileName" : "aUserConfigFile.json",
    "jsonFileData" : {"theme":"dark","fontSize":14}
}
  • 如果模型用string类型,必须输入转义后的字符串。

4. C++客户端的处理方式

推荐使用成熟的JSON库(如nlohmann/json)构建请求,自动完成转义:

nlohmann::json requestJson;
requestJson["userID"] = 123;
requestJson["jsonFileName"] = "aUserConfigFile.json";

nlohmann::json configData;
configData["theme"] = "dark";
configData["fontSize"] = 14;
requestJson["jsonFileData"] = configData.dump(); // dump()方法自动生成转义后的字符串

如果手动拼接JSON字符串,必须手动转义所有特殊字符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 15:22:09