You need to enable JavaScript to run this app. 如何解决JSON.stringify处理含反斜杠字符串时额外新增反斜杠的问题
优惠活动
大模型
产品
解决方案
定价
更多

如何解决JSON.stringify处理含反斜杠字符串时额外新增反斜杠的问题

问题解答

核心原因

反斜杠翻倍是两种转义规则叠加导致的:

  • JS 字符串字面量中,\\会被转义为1个实际的反斜杠字符,因此你定义的iteration = "Toolset\\Iteration 1",在内存中实际存储的内容为Toolset\Iteration 1(仅含1个反斜杠)
  • JSON 规范要求字符串中的反斜杠必须转义为\\,因此JSON.stringify处理时,会把每1个实际的反斜杠转为2个反斜杠输出
    你在控制台看到的Toolset\\\\Iteration 1是 JS 环境下字符串的转义显示效果,不是实际输出到文件/接口的 JSON 文本内容。

最优方案

根据实际需求选择对应处理方式:

情况1:需要JSON解析后得到的字符串值为Toolset\Iteration 1(1个反斜杠)

当前代码已经符合要求,无需修改。你看到的4个反斜杠只是JS的转义显示,实际输出到外部的JSON文本中该字段值就是Toolset\\Iteration 1,符合预期。
可以通过将输出写入本地json文件打开查看的方式验证。

情况2:需要JSON解析后得到的字符串值为Toolset\\Iteration 1(2个反斜杠)

需要让原始JS变量中实际存储2个反斜杠,有两种实现方式:

  • 方式1:直接修改字符串字面量,写4个反斜杠对应2个实际反斜杠
const iteration = "Toolset\\\\Iteration 1";
const data = JSON.stringify([
    {
      "op": "add",
      "path": "/fields/System.IterationPath",
      "value": iteration
    }
]);
  • 方式2:如果字符串是动态获取的,做全局替换即可
// iteration 为动态获取的仅含1个反斜杠的字符串
const processedIteration = iteration.replace(/\\/g, '\\\\');
const data = JSON.stringify([
    {
      "op": "add",
      "path": "/fields/System.IterationPath",
      "value": processedIteration
    }
]);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 01:54:02