Node.js解析含反斜杠的JSON报错,如何不修改文件访问字段?
解决JSON文件反斜杠导致的SyntaxError问题(无需修改原文件)
这个问题确实很常见——JSON语法里的单个反斜杠是转义字符,你文件里的"C:\incoming"中,\i会被解析器当成一个未完成的转义序列(JSON只认\"、\\、\/等有限的转义组合),所以直接报错了。不用修改原文件,我们可以在读取文件后先预处理内容,再解析:
方案1:Python环境下的处理
步骤很简单,先读取文件原始内容,把单个反斜杠替换成双反斜杠,再用JSON解析器处理:
import json # 读取原始文件内容 with open("your_file.json", "r", encoding="utf-8") as f: raw_content = f.read() # 替换单个反斜杠为双反斜杠(符合JSON转义规则) fixed_content = raw_content.replace("\\", "\\\\") # 解析JSON并访问字段 data = json.loads(fixed_content) print(data["file_paths"]["PROCESS"]) # 输出 C:\incoming print(data["file_paths"]["FAILED"]) # 输出 C:\failed
方案2:Node.js环境下的处理
同样是先读取文件内容,再全局替换反斜杠,最后解析:
const fs = require('fs'); // 读取原始文件内容 const rawContent = fs.readFileSync('your_file.json', 'utf8'); // 全局替换单个反斜杠为双反斜杠 const fixedContent = rawContent.replace(/\\/g, '\\\\'); // 解析JSON并访问字段 const data = JSON.parse(fixedContent); console.log(data.file_paths.PROCESS); // 输出 C:\incoming console.log(data.file_paths.FAILED); // 输出 C:\failed
核心逻辑就是:通过手动补充转义,让原本不合法的JSON内容变成符合语法规范的格式,这样解析器就能正确识别路径里的反斜杠了。
内容的提问来源于stack exchange,提问作者Subhashi
相关产品推荐
相关产品推荐

