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

Qualtrics工作流中JSON.parse因未转义双引号失败求助

解决Qualtrics Code Task中JSON.parse因双引号转义失败的问题

问题核心:当你把包含转义双引号的JSON字符串用模板字符串(`)包裹后传入JSON.parse时,JavaScript会自动解析模板字符串里的\"为普通双引号,导致最终的JSON字符串出现未转义的双引号,违反JSON语法规范,解析失败。

以下是几种可行的解决方法:

  • 方法1:手动双重转义模板字符串中的双引号
    由于模板字符串会解析一层转义,你需要把原JSON里的\"写成\\",让JSON.parse最终拿到正确的转义格式:

    const validJsonStr = `{"feedback_type":"Dining","reservation_id":"1234","order_id":null,"recommend_to_friend":"No","overall":"2","food":"3","ambience":"4","service":"5","notes":"The food was \\"AWESOME\\""}`;
    const parsedData = JSON.parse(validJsonStr);
    
  • 方法2:直接使用API返回的原始文本
    如果是从API拉取数据,不要手动复制JSON字符串写进代码,而是直接获取API响应的原始文本,避免手动转义错误:

    // 假设你用fetch请求API
    fetch('目标API地址')
      .then(res => res.text()) // 获取原始响应文本
      .then(rawJson => JSON.parse(rawJson))
      .then(data => {
        // 处理解析后的数据
      })
      .catch(err => console.error('解析失败:', err));
    
  • 方法3:用正则修复已损坏的JSON字符串
    如果你只能拿到已被破坏的字符串,可以用正则匹配并修复字符串内容里的未转义双引号(注意只匹配JSON值部分的双引号,不匹配键的边界):

    const brokenJson = `{"feedback_type":"Dining","reservation_id":"1234","order_id":null,"recommend_to_friend":"No","overall":"2","food":"3","ambience":"4","service":"5","notes":"The food was "AWESOME""}`;
    // 匹配字符串内容中未转义的双引号并转义
    const fixedJson = brokenJson.replace(/(?<!\\)"(?!(:|,|}|\s))/g, '\\"');
    const parsedData = JSON.parse(fixedJson);
    

    正则说明:(?<!\\)确保匹配的双引号前面没有反斜杠(未转义),(?!(:|,|}|\s))确保后面不是JSON结构的边界符号(避免误转义键的引号)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 12:04:59