2016-10-17 115 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) 
})