цикл по списку массивов json - PullRequest
0 голосов
/ 05 мая 2020

следующий список массивов, мне нужно получить все цены один за другим. это возвращает полный json объект console.log('File data:', jsonString);, но for l oop, похоже, никогда не вызывается, он никогда не входит в него. Мне нужно l oop через файл json, но его в другой папке файл json находится в папке меню с именем list. json menu-> projectName \ menu \ list. json файл выглядит так Данные:

[
  {
    "code": "ZC",
    "price": "1"
  },
  {
    "code": "ZS",
    "price": "3"
  },
  {
    "code": "VC",
    "price": "4"
  },
...]

JS:

const jsonList = fs.readFile("../menu/list.json", "utf8", (err, jsonString) => {
  if (err) {
    console.log("File read failed:", err);
    return;
  }
  console.log("File data:", jsonString);
  console.log("File data:", jsonString.url);
  for (var key in jsonString) {
    if (jsonString.hasOwnProperty(key)) {
      console.log("===>", jsonString[key].price);
    }
    return jsonString;
  }
});

Ответы [ 2 ]

1 голос
/ 05 мая 2020

Есть два способа решить проблему, с которой вы столкнулись, один - запустить ваш код внутри обратного вызова:

const jsonList = fs.readFile("../menu/list.json", "utf8", (err, jsonString) => {
  if (err) {
    console.log("File read failed:", err);
    return;
  }
  console.log("File data:", jsonString);
  for (var key in JSON.parse(jsonString)) {
    if (jsonList.hasOwnProperty(key)) {
      console.log("===>", jsonList[key].price); // This is never called
    }
  }
});

или с помощью функции syn c для чтения файла :

const jsonString = fs.readFileSync("../menu/list.json", "utf8");
console.log("File data:", jsonString);
const jsonList = JSON.parse(jsonString);
for (var key in jsonList) {
  if (jsonList.hasOwnProperty(key)) {
    console.log("===>", jsonList[key].price); // This is never called
  }
}
1 голос
/ 05 мая 2020

Я думаю, вам нужно l oop в обратном вызове, так как это asyn c, и поэтому jsonList не тот объект, который вы ожидаете при доступе к нему. См. Получить данные из fs.readFile

...