2014-04-16 15 views
11

Ich habe JSON-Daten, die ich durchschleifen muss. Die Daten werden in einer Datei mit dem Titel „people.json“, die unten aufgeführten strukturiert:Wie kann ich ein Array von JSON-Objekten durchlaufen?

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

Ich mag jedes Objekt in dieser Datei lesen und speichern (ich verwende Mongoose). Hier ist, was ich bisher habe:

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) {}); 
    } 
}); 

Ich bin nicht in der Lage, dies zu arbeiten, obwohl. Was mache ich falsch?

+0

Die Schleife sieht gut aus. Haben Sie überprüft, dass kein Fehler vorliegt und Sie tatsächlich Daten in Ihrem Rückruf erhalten? –

+0

Sie können [mongoimport] (http://docs.mongodb.org/manual/reference/program/mongoimport/) ausprobieren, was eine bessere Möglichkeit wäre, dies zu tun. –

Antwort

25
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) {}); 
    } 
}); 
8

ES6 for..of kann das auch tun.

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