如何在读取文件时删除JSON.parse()之前的特殊字符

时间:2018-10-13 05:06:52

标签: javascript node.js json

我在来自第三方的文件夹中有一个json,但我{@ {1}}的数据我无法控制,只需要json,并且操纵。

有时我会收到此错误:

  

未捕获的SyntaxError:JSON输入意外结束       在JSON.parse

json是有效的json,但是由于某些特殊字符,我遇到了以上错误:

  

R:\ 30-09-18 \ LTP \ p

有时我会遇到解析错误:

  

无法解析.........

问题:我如何删除所有特殊字符,以使parse不会抛出任何JSON.parse(data);

这是我要尝试的:

error

请提前帮助我!!!

1 个答案:

答案 0 :(得分:0)

这是您的解决方案

var fs = require('fs');
var path = require('path');
var fileLoc = path.join(__dirname,'file.json');
var content = fs.readFileSync(fileLoc,'utf8');
content = content.replace(/\\/g, '\\\\')
content = JSON.parse(filecontent);

当您要分析包含反斜杠字符的字符串时,应将每个反斜杠更改为两个反斜杠。下面是在Chrome浏览器的控制台标签中运行的示例

content = '{"path":"R:\\30-09-18\\LTP\\p"}'
JSON.parse(content)
VM835:1 Uncaught SyntaxError: Unexpected number in JSON at position 12
    at JSON.parse (<anonymous>)
    at <anonymous>:1:6
(anonymous) @ VM834:1
content = content.replace(/\\/g, '\\\\')
"{"path":"R:\\30-09-18\\LTP\\p"}"
JSON.parse(content)
//result is {path: "R:\30-09-18\LTP\p"}