2014-10-20 73 views
0

我的Node.js應用程序讀取的字符串,含有JSON數據,使用GET方法一個Python後端。有時,當我使用JSON.parse(),並刷新頁面它成功之後,它提供了一個Unexpected token ,錯誤。解析JSON在node.js中提供了一個錯誤

[ 
     { 
     "postid":"c4jgud85mhs658sg4hn94jmd75s67w8r", 
     "email":"[email protected]", 
     "post":"hello world", 
     "comment":[] 
     }, 
     { 
     "postid":"c4jgud85mhs658sg4hn94jmd75s67w8r", 
     "email":"[email protected]", 
     "post":"hello world", 
     "comment":[] 
     } 
] 

通過console.log吉寧JSON對象,我能夠驗證它只打印對象部分(意味着只有對象的一部分被傳遞),當它提供錯誤 - 例如:

4hn94jmd75s67w8r", 
     "email":"[email protected]", 
     "post":"hello world", 
     "comment":[] 
     } 
] 

[ 
     { 
     "postid":"c4jgud85mhs658sg 

在node.js的,林只使用

var data = JSON.parse(resJSON); //resJSON is the variable containing the JSON

+0

這可能是因爲JSON是無效的:http://jsonlint.com – Whymarrh 2014-10-20 01:00:53

+0

我檢查了我的JSON文件中的browser..its有效 – user3015541 2014-10-20 01:02:49

+0

你缺少一個雙引號在'結束評論「在第一個對象。 – mscdex 2014-10-20 01:04:34

回答

3

如果它成功「有時,」我懷疑你解析響應爲'data'到達,如:

http.get('...', function (res) { 
    res.on('data', function (data) { 
     console.log(JSON.parse(data.toString())); 
    }); 
}); 

如果響應立即給所有這將工作。但是,它也可以分成多個塊,通過多個'data'事件接收。

要處理分塊響應,您需要將chunk s和parse作爲一個整體進行合併,一旦數據流達到'end'

http.get('...', function (res) { 
    var body = ''; 

    res.on('data', function (chunk) { 
     body += chunk.toString(); 
    }); 

    res.on('end', function() { 
     console.log(JSON.parse(body)); 
    }); 
});