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

C#编写Windows服务调用API发POST请求携带双引号导致请求异常如何解决

解决方案

你遇到的问题本质是JSON 字符串转义规则未正确处理导致的,直接手动拼接 POST 请求的 JSON 载荷是问题的核心诱因,有成熟的方案可以原生保留双引号:

方案1:使用标准 JSON 序列化库(最推荐)

不要手动拼接 JSON 字符串,直接用 .NET 官方的 System.Text.Json 或者第三方的 Newtonsoft.Json 处理序列化,库会自动对所有特殊字符做合规转义,不需要你手动处理任何字符:

// 1. 先定义请求对应的实体类
public class PostRequest
{
    public string Description { get; set; }
    // 其他请求字段按需添加
}

// 2. 序列化时自动处理转义
var requestData = new PostRequest
{
    Description = description // 直接传原始用户输入即可,双引号会被自动转义
};
string jsonPayload = JsonSerializer.Serialize(requestData);

// 3. 发起POST请求时直接用序列化后的payload即可

这种方式除了双引号,还会自动处理换行、制表符、特殊 Unicode 字符等所有 JSON 要求转义的内容,不会出现格式错误。

方案2:手动转义双引号(仅用于必须手动拼接JSON的极端场景,不推荐)

如果确实需要手动拼接 JSON,需要把字符串中的双引号替换为 JSON 规范要求的转义格式 \",注意 C# 中字符串是不可变类型,Replace 方法会返回新字符串,必须赋值给原变量才会生效:

// 正确的转义写法,替换后双引号会变成JSON可识别的转义格式
description = description.Replace("\"", "\\\"");

注意:手动转义只处理了双引号问题,如果用户输入包含换行、反斜杠等其他特殊字符,依然会导致 JSON 格式错误,因此仅作为临时应急方案使用。

效果验证

你举例的 Replaced 4" pipe 内容,经过正确转义后在 JSON 载荷中会表现为 {"description":"Replaced 4\" pipe"},API 端解析后会自动还原为原始的带双引号的内容,不会出现字段提前截断的问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 02:48:03