插入逃脱字符' \'从api node.js返回json

时间:2016-07-21 10:45:50

标签: javascript node.js

我尝试使用node.js在简单的api上创建 这是代码`var express = require(" express");

var app =express();

var fs=require("fs")
var bodyParser = require('body-parser');

app.use(express.static('public'));



var router = express.Router();
var port = process.env.PORT || 8081; 
//Read file from JSON file


router.get('/', function(req, res) {    

fs.readFile('routes.JSON','utf8',function (err,data) {
    if(err){
        console.log(err);
    }
   console.log(data);
   res.json(data);
});


});

app.use('/api', router);


app.listen(port);
console.log('Listening to ' + port);`

Here I'm reading a json file routes.JSON and return the value to http://127.0.0.1:8081/api

I'm expecting the output `
{
  "placeid": 123,
  "timings": {
    "time":"12/03/2014:09:12",
      "geocode": {
        "long":"37.423021",
        "lat":"122.083739",
        "toLocation":"Vaikom"
      }

  }

}`

但是它给出了像这样的输出

" {\ r \ n \" placeid \":123,\ r \ n \"时间\":{\ r \ n \&# 34;时间":\" 12/03/2014:09:12 \",\ r \ n \" geocode \":{\ r \ n \" long \":\" 37.423021 \",\ r \ n \" lat \":\" 122.083739 \&#34 ;,\ r \ n \" toLocation \":\" Chempu \" \ r \ n} \ r \ n \ r \ n} \ r \ n \ r \ n \ N}"

我能够在没有' \'。

的情况下将json写入控制台

2 个答案:

答案 0 :(得分:2)

返回这样的数据时添加JSON.parse函数。

res.json(JSON.parse(data));

当你从文件中读取它基本上是字符串数据类型。当你输出到控制台时,它打印文件中的任何内容,给你一个幻觉,它是一个json对象,但它的字符串。尝试将类型数据打印到控制台,你会理解。

答案 1 :(得分:0)

请检查邮递员中的标题,我遇到了同样的问题,但后来我意识到我使用了 content-Type-application/something 而不是 "Content-Type"-"application/JSON" , 将标头更改为 application/JSON 后问题已解决。