2013-06-24 57 views
0

我使用nodejs解析一些JSON文件并将它们插入到mongodb中,这些文件中的JSON具有无效的JSON字符,例如\ n,\“等.. 不明白的是,如果我试图解析,如:JSON.parse文件输入不同于解析字符串文字

console.log(JSON.parse('{"foo":"bar\n"}')) 

我得到

undefined:1 
    {"foo":"bar 

,但如果我试图从文件解析输入(该文件具有相同的字符串{“foo”的: “bar \ n”})如:

new lazy(fs.createReadStream("info.json")) 
    .lines 
    .forEach(function(line){  
var line = line.toString(); 
     console.log(JSON.parse(line)); 
    } 
); 

每一件事情都可以正常工作,我想知道如果这个罚款和它可以解析我的文件,或者我应该替换所有无效的JSON字符之前我解析文件, 和为什么有区别二。

感谢

回答

3

如果你可以看到"\n"如果你的文本文件,然后它不是线的末端,但\字符后跟一个n

\n在JavaScript字符串文字中添加了行尾,并且它们在JSON字符串中被禁止。

json.org

enter image description here

为了把线的一端,在一个JSON字符串,必须逃避它,这意味着你必须在JavaScript字符串逃过\让有“\ n”在由JSON.parse接收到的字符串:

console.log(JSON.parse('{"foo":"bar\\n"}')) 

这将产生一个对象,其属性foo的值将包含线的端部:

enter image description here

+0

我知道了,谢谢你 但如果我想在字符串常量是一个正常的字符不是一个换行符我怎么把它写在\ n(\ n是无效的,\\ n是换行)? – ibmkhd

+0

我明白了'{“foo”:“bar \\\\ n”}':) – ibmkhd

相关问题