我很难从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}
感谢您的帮助!
答案 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);
});