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

NSwagStudio生成TypeScript客户端时string类型返回值反序列化错误求助

解决NSwag生成TypeScript客户端解析纯字符串响应报错的问题

针对你遇到的.NET Core 2.2 + NSwagStudio 13.16.1生成的TypeScript客户端对纯字符串响应执行JSON解析导致报错的问题,可通过以下几种方式解决:

方法1:调整API响应为合法JSON字符串

如果允许修改API代码,确保返回的字符串被包裹为合法的JSON字符串格式。例如,返回带双引号的字符串而非纯文本,这样JSON.parse就能正确解析,不会抛出错误。

修改后的API返回逻辑示例:

return BadRequest("\"Invalid input\""); // 用双引号包裹字符串,使其成为合法JSON结构

方法2:配置NSwagStudio跳过字符串类型的JSON解析

在NSwagStudio中调整TypeScript客户端生成配置,让生成器针对字符串类型响应直接返回原始文本,不执行JSON解析:

  • 打开NSwagStudio并加载你的Swagger/OpenAPI文档
  • 切换到TypeScript Client标签页
  • 在Advanced设置区域,找到String Handling选项,设置为Raw
  • 重新生成客户端代码,此时字符串类型的响应会直接使用_responseText,不再调用JSON.parse

方法3:手动修改生成的客户端代码(临时方案)

如果暂时无法修改API或NSwag配置,可手动修改生成的代码,针对字符串类型的响应跳过JSON解析:
将生成代码中类似这样的逻辑:

result400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver) as string;

修改为:

result400 = _responseText === "" ? null : _responseText as string;

注意:这种方法每次重新生成客户端代码都会被覆盖,仅作为临时应急方案。

问题原因说明

NSwag默认会将所有响应内容视为JSON格式处理,当API返回未被双引号包裹的纯字符串时,该内容不属于合法的JSON(合法JSON字符串必须被双引号包裹),因此JSON.parse会抛出语法错误。而[ProducesResponseType(typeof(string), StatusCodes.Status400BadRequest)]仅声明了响应类型为字符串,但并未约束响应内容必须是JSON格式的字符串,导致生成的客户端代码逻辑与实际响应不匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 21:45:32