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

.Net Core中Content.ReadAsStringAsync获取字符串带多余引号如何解决

问题根因

你拿到的"\"TEST\""不是代码读取出错,是两边展示逻辑不一致导致的:

  • Postman会自动对application/json类型的响应做反序列化后可视化展示,你看到的"TEST"是处理后的结果,不是HTTP原始报文内容
  • ReadAsStringAsync()读取的是未做任何处理的HTTP原始响应文本:当WebAPI返回值本身是string类型、且响应格式为JSON时,按照JSON语法规范,字符串值必须用双引号包裹,所以原始报文内容就是"TEST";C#调试器展示字符串对象时,会把字符串边界的引号、内部转义符都显示出来,最终就呈现为你看到的"\"TEST\""。

响应截图

解决方法

推荐方案:用标准JSON反序列化处理

不要手动写字符串替换逻辑删引号/反斜杠,用JSON库反序列化是最稳妥的方案,不会误删内容本身带的合法引号:

// 如果你用.NET内置的System.Text.Json
string rawContent = await response.Content.ReadAsStringAsync();
string targetResult = JsonSerializer.Deserialize<string>(rawContent);

// 如果你用Newtonsoft.Json(Json.NET)
// string targetResult = JsonConvert.DeserializeObject<string>(rawContent);

执行后targetResult就是你预期的无多余字符的TEST。

临时方案:手动裁剪首尾引号

如果确定返回内容不会在首尾出现和业务相关的双引号,也可以直接裁剪首尾的包裹引号:

string rawContent = await response.Content.ReadAsStringAsync();
string targetResult = rawContent.Trim('"');
注意事项

尽量不要直接用.Result调用异步方法,在有同步上下文的场景(比如WinForm、WPF、旧版ASP.NET)很容易引发线程死锁,推荐用await关键字获取异步结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 14:39:08