2016-10-17 74 views
1

我想知道爲什麼我得到我的JSON響應與轉義雙引號。將JSON響應發送回客戶端的最佳做法是什麼?節點Express&JSON響應格式

代碼

var express = require('express'); 
var server = express(); 
var country = ''; 
var dataStr = '[{"country_code" : "USA", "country_name" : "United States","bac_limit" : 0.80}, { "country_code" : "CAN", "country_name" : "United States","bac_limit":0.80}]'; 
connectToMongoDb(); 

server.get('/', function(req, res){ 
    country = req.query.country; 
    res.json(dataStr); 
}); 
server.listen(8080); 

輸出

"[{\"country_code\" : \"USA\", \"country_name\" : \"United States\",\"bac_limit\" : 0.80}, { \"country_code\" : \"CAN\", \"country_name\" : \"United States\",\"bac_limit\":0.80}]" 
+0

嘗試'JSON.stringify(「[{‘COUNTRY_CODE’: 「USA」}]')' - 只要你試圖串化一個字符串,結果就是你所得到的。最好的響應它只是串行化數組 –

+0

@KrzysztofSafjanowski你stringify一個字符串已經包含數據編碼爲JSON。 –

+0

@ t.niese與'dataStr'相同 –

回答

1

dataStr實際上是一個字符串,res.json呼叫發送字符串作爲這樣。如果您要發送的數據作爲JSON,不要把它作爲一個字符串,而是一個JS對象/數組(或使用JSON.parse):

var dataStr = [{"country_code" : "USA", "country_name" : "United States","bac_limit" : 0.80}, { "country_code" : "CAN", "country_name" : "United States","bac_limit":0.80}] 
// alternatively, JSON.parse(dataStr) 
connectToMongoDb() 

server.get('/', function(req, res){ 
country = req.query.country 
res.json(dataStr) 
})