使用Express JS读取JSON文件

时间:2017-05-15 21:36:57

标签: json express

我很难从json文件中获取一个值。无论我改变什么,它都不起作用。有人可以帮助我,告诉我我做错了什么吗?这是我的代码

app.get('/results', function(req, res){
filePath = '/home/smath/'+req.query.id+'comp.json';
fs.readFile(filePath, function (err, data) {
    if (err) {
            throw err;
     }
        var jsondata = JSON.parse(data);
        var score_comp = jsondata.scorecomplexes;
   });

console.log(score_comp);
var jsonResponse = [];
jsonResponse.push({"text": "Complexes: "+score_comp+"/10"});
res.send(jsonResponse);
}); 

我尝试阅读的json文件看起来像这样:

{"complexes":[{"Réponse 1":"a."},
             {"Réponse 2":"a."},
             {"Réponse 3":"c."}],
 "scorecomplexes":2}

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

您的变量“jsondata”和“score_comp”在本地为您传递给app.get的函数声明。因此,它们不能在该范围之外访问。

一种解决方案是在“范围”之外声明变量并使变量成为全局变量,请参见下面的示例:

//global variables
var jsondata;
var score_comp;

app.get('/results', function(req, res){
filePath = '/home/smath/'+req.query.id+'comp.json';
fs.readFile(filePath, function (err, data) {
    if (err) {
            throw err;
     }
        jsondata = JSON.parse(data);
        score_comp = jsondata.scorecomplexes;
   });

console.log(score_comp);
var jsonResponse = [];
jsonResponse.push({"text": "Complexes: "+score_comp+"/10"});
res.send(jsonResponse);
});