我尝试使用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写入控制台答案 0 :(得分:2)
返回这样的数据时添加JSON.parse函数。
res.json(JSON.parse(data));
当你从文件中读取它基本上是字符串数据类型。当你输出到控制台时,它打印文件中的任何内容,给你一个幻觉,它是一个json对象,但它的字符串。尝试将类型数据打印到控制台,你会理解。
答案 1 :(得分:0)
请检查邮递员中的标题,我遇到了同样的问题,但后来我意识到我使用了 content-Type-application/something 而不是 "Content-Type"-"application/JSON" , 将标头更改为 application/JSON 后问题已解决。