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
相关产品推荐
相关产品推荐

