2013-06-24 92 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

相關問題