无法用node.js解析json

时间:2015-04-20 12:38:53

标签: html json parsing web

我是node.js初学者,我正在尝试读取json文件,但是当我在终端中运行'npm start'时,我收到此错误:

undefined:3462

SyntaxError: Unexpected end of input
    at Object.parse (native)
    at /Users/alonbond/node_apps/analoc_2/analoc/routes/index.js:15:20
    at fs.js:334:14
    at FSReqWrap.oncomplete (fs.js:95:15)

这是index.js:

var express = require('express');
var fs = require('fs');
var app = express.Router();

/* GET home page. */
app.get('/', function(req, res, next) {
    console.log('Welcome to Express.js');
    res.render('index', { title: 'Express' });
});

/* GET json */
app.get('/analoc/', function(req, res) {

    fs.readFile('./sample_data.json', function(error, data){
        jsonObj = JSON.parse(data);
        res.send('THE DATA: ', jsonObj);
    });

});

module.exports = app;

有任何帮助吗? 谢谢!

2 个答案:

答案 0 :(得分:0)

readFile是异步版本。您应该只使用readFileSync,或者将其重写为正确异步。

console.log('analoc request');

var fs = require('fs');

 fs.readFile('./files/sample_data.json', function(err,config){
console.log('Config: ' + JSON.parse(config));
});

或者:

var config = fs.readFileSync('./files/sample_data.json');
console.log('Config: ' + JSON.parse(config));

答案 1 :(得分:0)

readFile doesn't have a return value。您正在尝试解析"undefined",就好像它是JSON一样。读取后文件将传递给回调函数。

fs.readFile('./files/sample_data.json', function (err, data) {
    if (err) throw err;
    var config = JSON.parse(data);
    console.log('Config: ', config);
});