我收到的错误是"目录未定义"我真的不知道这是否意味着我的代码或我的json文件。这是我用https://jsonformatter.curiousconcept.com/
检查格式的json文件 [
{
"directory": "C:\\Users\\PCAdmin\\Downloads\\jsonin",
"dirID": "dir01"
},
{
"directory": "C:\\Users\\PCAdmin\\Downloads\\jsonout",
"dirID": "dir02"
}
]
以下是我的代码,根据我见过的示例应该可行,但我似乎无法克服错误;
'use strict';
var fs = require('fs');
var jsonObj = require("./jsonDirectories.json");
for(directory in jsonObj) {
console.log("Dir: "+jsonObj.directory);
}
我确定它有点蠢,但任何方向都会受到赞赏
答案 0 :(得分:1)
在使用之前,您需要declare directory
变量:
for (let item of jsonObj) {
// This line also needed fixing:
console.log("Dir: ", item.directory);
}
答案 1 :(得分:1)
错误表示代码第4行的变量directory
未初始化。以下代码将修复该错误:
'use strict';
var fs = require('fs');
var jsonObj = require("./jsonDirectories.json");
for (var dirInfo in jsonObj) {
console.log("Dir: " + dirInfo.directory);
}
但是,这仍然无法执行您想要的操作,因为in
运算符对数组不起作用。 in
运算符通常用于获取对象的键(然后是should still be used carefully)。
要遍历您的目录信息数组,您需要的是:
'use strict';
var fs = require('fs');
var jsonObj = require('./jsonDirectories.json');
jsonObj.forEach(function(dirInfo) {
console.log('Dir: '+dirInfo.directory);
}
(我也删除了混合的单引号和双引号,这是一种很好的做法。)
答案 2 :(得分:0)
在node.js中使用for(directory in jsonObj)
时,目录将分配给每个项目的索引,而不是值。所以你可以使用jsonObj[directory]
来获取目录。
但在我看来,这种替代方案更好:
jsonObj.forEach( function(directory) {
console.log("Dir: "+ directory);
});