【问题标题】:How can I loop through an array of JSON objects?如何循环遍历 JSON 对象数组?
【发布时间】:2023-03-07 06:47:01
【问题描述】:

我有需要循环的 JSON 数据。数据位于名为“people.json”的文件中,其结构如下:

[{"firstname":"John","lastname":"Smith","age":"40"},{"firstname":"Bill","lastname":"Jones","age":"40"}, ...]

我想读取这个文件中的每个对象并保存它(我正在使用 Mongoose)。这是我目前所拥有的:

var fs = require('fs');
var Person = require('../models/people');

fs.readFile('./people.json', 'utf8', function (err,data) {
    var i;
    for(i = 0; i < data.length; i++) {
        var newPerson = new Person();
        newPerson.firstname = data[i].firstname;
        newPerson.lastname = data[i].lastname;
        newPerson.age = data[i].age;
        newPerson.save(function (err) {});
    }
});

我无法让它工作。我做错了什么?

【问题讨论】:

  • 循环看起来不错。您是否确认没有错误并且您实际上在回调中获取数据?
  • 您可能想查看mongoimport,这将是一个更好的方法。

标签: json node.js mongodb express mongoose


【解决方案1】:

ES6 for..of 也可以做到这一点。

fs.readFile('./people.json', 'utf8', function (err,data) {
  for(var item of data) {
     console.log('item: ', [item.firstname, ...]);
  }
});

【讨论】:

    【解决方案2】:
    fs.readFile('./people.json', 'utf8', function (err,data) {
      data = JSON.parse(data); // you missed that...
      for(var i = 0; i < data.length; i++) {
        var newPerson = new Person();
        newPerson.firstname = data[i].firstname;
        newPerson.lastname = data[i].lastname;
        newPerson.age = data[i].age;
        newPerson.save(function (err) {});
      }
    });
    

    【讨论】:

      猜你喜欢
      • 2016-07-28
      • 2015-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 2016-09-07
      • 1970-01-01
      相关资源
      最近更新 更多