目录没有定义循环json文件与节点js

我得到一个错误,“目录没有定义”我真的不知道这是否意味着在我的代码或我的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); } 

我敢肯定,这是愚蠢的,但任何方向将不胜感激

这个错误意味着代码的第4行的variablesdirectory没有被初始化。 以下代码将修复该错误:

 'use strict'; var fs = require('fs'); var jsonObj = require("./jsonDirectories.json"); for (var dirInfo in jsonObj) { console.log("Dir: " + dirInfo.directory); } 

但是,这仍然不能做你想做的事情,因为in运算符不能以数组的方式工作。 in运算符通常用于获取对象的键(然后应该小心使用 )。

为了遍历你的数组目录信息,你想要的是以下内容:

 'use strict'; var fs = require('fs'); var jsonObj = require('./jsonDirectories.json'); jsonObj.forEach(function(dirInfo) { console.log('Dir: '+dirInfo.directory); } 

(我也删除了混合的单引号和双引号,这是很好的做法。)

您需要在使用它之前声明 directoryvariables:

 for (let item of jsonObj) { // This line also needed fixing: console.log("Dir: ", item.directory); } 

当在node.js中使用for(directory in jsonObj)中的for(directory in jsonObj)时,目录将被分配给每个项目的索引,而不是值。 所以你可以使用jsonObj[directory]来获取目录。

但在我看来,这个select更好:

 jsonObj.forEach( function(directory) { console.log("Dir: "+ directory); });