1032 Stimmen

Wie parst man JSON mit Node.js?

Wie sollte ich JSON mit Node.js parsen? Gibt es ein Modul, das JSON sicher validieren und parsen kann?

1142voto

Felix Kling Punkte 751464

Sie können einfach Folgendes verwenden JSON.parse .

Die Definition des JSON Objekt ist Teil der ECMAScript 5-Spezifikation . node.js basiert auf Google Chrome's V8 Engine, die dem ECMA-Standard entspricht. Daher verfügt node.js auch über ein globales Objekt JSON [docs] .

Hinweis - JSON.parse kann den aktuellen Thread blockieren, da es sich um eine synchrone Methode handelt. Wenn Sie also planen, große JSON-Objekte zu parsen, verwenden Sie einen Streaming-JSON-Parser.

680voto

eliocs Punkte 17779

Können Sie erfordern .json-Dateien.

var parsedJSON = require('./file-name');

Wenn Sie zum Beispiel eine config.json in demselben Verzeichnis wie die Quellcodedatei, die Sie verwenden würden:

var config = require('./config.json');

oder (die Dateierweiterung kann weggelassen werden):

var config = require('./config');

beachten Sie, dass require es synchron und liest nur die Datei einmal Die folgenden Aufrufe geben das Ergebnis aus dem Cache zurück

Beachten Sie außerdem, dass Sie dies nur für lokale Dateien unter Ihrer absoluten Kontrolle verwenden sollten, da es potenziell jeden Code innerhalb der Datei ausführt.

342voto

sampathsris Punkte 20368

Sie können verwenden JSON.parse() .

Sie sollten in der Lage sein, die JSON Objekt auf jeder ECMAScript 5 kompatible JavaScript-Implementierung. Und V8 , auf dem Node.js aufbaut, ist eine davon.

Hinweis: Wenn Sie eine JSON-Datei zum Speichern sensibler Informationen (z. B. Passwörter) verwenden, ist das der falsche Weg. Sehen Sie sich an, wie Heroku das macht: https://devcenter.heroku.com/articles/config-vars#setting-up-config-vars-for-a-deployed-application . Finden Sie heraus, wie Ihre Plattform das macht, und nutzen Sie process.env um die Konfigurationsvariablen aus dem Code abzurufen.


Parsen einer Zeichenkette mit JSON-Daten

var str = '{ "name": "John Doe", "age": 42 }';
var obj = JSON.parse(str);

Parsen einer Datei mit JSON-Daten

Sie müssen einige Dateioperationen mit fs Modul.

Asynchrone Version

var fs = require('fs');

fs.readFile('/path/to/file.json', 'utf8', function (err, data) {
    if (err) throw err; // we'll not consider error handling for now
    var obj = JSON.parse(data);
});

Synchrone Version

var fs = require('fs');
var json = JSON.parse(fs.readFileSync('/path/to/file.json', 'utf8'));

Sie wollen die require ? Denken Sie noch einmal nach!

Manchmal können Sie require :

var obj = require('path/to/file.json');

Ich empfehle dies jedoch aus mehreren Gründen nicht:

  1. require ist synchron. Wenn Sie eine sehr große JSON-Datei haben, wird sie Ihre Ereignisschleife erdrosseln. Sie müssen wirklich JSON.parse con fs.readFile .
  2. require liest die Datei nur einmal . Nachfolgende Aufrufe von require für dieselbe Datei eine zwischengespeicherte Kopie zurück. Keine gute Idee, wenn Sie eine .json Datei, die ständig aktualisiert wird. Sie könnten verwenden ein Hacken . Aber an diesem Punkt ist es einfacher, einfach die fs .
  3. Wenn Ihre Datei keine .json Erweiterung, require wird der Inhalt der Datei nicht als JSON behandelt.

Ernsthaft! Verwenden Sie JSON.parse .


load-json-file Modul

Wenn Sie eine große Anzahl von Dokumenten lesen .json Dateien, (und wenn Sie extrem faul sind), wird es lästig, jedes Mal Kesselsteincode zu schreiben. Sie können einige Zeichen einsparen, indem Sie die load-json-file Modul.

const loadJsonFile = require('load-json-file');

Asynchrone Version

loadJsonFile('/path/to/file.json').then(json => {
    // `json` contains the parsed object
});

Synchrone Version

let obj = loadJsonFile.sync('/path/to/file.json');

Parsen von JSON aus Streams

Wenn der JSON-Inhalt über das Netzwerk gestreamt wird, müssen Sie einen Streaming-JSON-Parser verwenden. Andernfalls wird Ihr Prozessor überlastet und Ihre Ereignisschleife erstickt, bis der JSON-Inhalt vollständig gestreamt ist.

Il y a eine Vielzahl von Paketen in NPM verfügbar für diese. Wählen Sie, was für Sie am besten ist.


Fehlerbehandlung/Sicherheit

Wenn Sie sich nicht sicher sind, ob das, was Sie an JSON.parse() es gültiges JSON müssen Sie den Aufruf an JSON.parse() innerhalb einer try/catch Block. Ein vom Benutzer bereitgestellter JSON-String könnte Ihre Anwendung zum Absturz bringen und sogar zu Sicherheitslücken führen. Stellen Sie sicher, dass eine Fehlerbehandlung durchgeführt wird, wenn Sie extern bereitgestelltes JSON parsen.

87voto

None Punkte 1

Verwenden Sie die JSON-Objekt :

JSON.parse(str);

37voto

pyprism Punkte 2838

Ein weiteres Beispiel für JSON.parse :

var fs = require('fs');
var file = __dirname + '/config.json';

fs.readFile(file, 'utf8', function (err, data) {
  if (err) {
    console.log('Error: ' + err);
    return;
  }

  data = JSON.parse(data);

  console.dir(data);
});

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X