Mit Node.JS, wie lese ich eine JSON-Datei in die (server -) Speicher?
Hintergrund
Ich mache einige Experimente mit Node.js und Lesen möchte, ein JSON-Objekt, das entweder aus einer text-Datei oder eine .js-Datei (welche ist besser??) in den Speicher, so dass ich zugreifen kann, dass das Objekt schnell aus dem code. Ich weiß, dass es Dinge wie Mongo, Alfred, etc gibt, aber das ist nicht das, was ich jetzt brauche.
Frage
Wie lese ich ein JSON-Objekt aus einem text-oder js-Datei und in der server-Speicher mit JavaScript/Node?
- was tun Sie call-server-Speicher ? Ihre nodejs script funktioniert so lange, wie Sie es schaffen , aber Sie müssen zum speichern von Daten irgendwo, es sei denn, Sie machen die nodejs script hartnäckig.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sync:
Async:
let imported = require("file.json")
. (2) JSON.analysiert werden muss, von asynchronen, weil ich diesen code zum laden einer 70mb JSON-Datei in den Speicher als ein Objekt. Es dauert Millisekunden auf diese Weise, aber wenn ichrequire()
es tuckert.require
macht einfach eine ganze Menge mehr alsJSON.parse
.JSON.parse
ist nur das Parsen von JSON.require
ist Parsen von JavaScript. Ich bin mir sicher, dass Sie herausfinden können, warum die letztere ist langsamer.require
, mit dieser Antwort ist nicht mehr anwendbar, wenn Sie nur wollen, zu laden, eine json-Datei. Verwenden Sie einfachlet data = require('./yourjsonfile.json')
und Los gehts (mit dem booknote, dass, wenn die Leistung benötigt wird Auswirkungen auf Ihren code haben Sie Probleme weit darüber hinaus "zu wollen, laden ein .json-Datei")Der einfachste Weg, die ich gefunden habe, um dies zu tun ist, um Sie nur
require
und der Weg, um Ihre JSON-Datei.Angenommen, Sie haben folgende JSON-Datei.
test.json
Dann können Sie einfach laden Sie diese in Ihre node.js Anwendung mit
require
require
im Knoten synchron ausgeführt. Tauchen Sie ein hiertest.json
anders wäre seinem Beispiel. Ich bin mitnode 5.0
require
ing es ausgeführt, dass der code? Wenn ja, dann Sie wirklich brauchen, um zu kontrollieren, wo Sie Ihre json-Dateien sind von einer oder einem Angreifer das ausführen von Schadcode auf Ihrem Rechner.Asynchrone gibt es für einen Grund! Wirft Stein auf @mihai
Anders, hier ist der code, den er verwendet die asynchrone version:
Zumindest in Knoten v8.9.1, können Sie nur
var json_data = require('/path/to/local/file.json');
und haben Zugriff auf alle Elemente der JSON-Objekt.
file.json
nach neuen verlangen (ohne Neustart des Programms) werden die Daten aus dem ersten laden. Ich habe keine Quelle um das zu unterstützen, aber ich hatte diese in-app-ich bin GebäudeIn Knoten 8 können Sie die eingebaute
util.promisify()
für das asynchrone Lesen einer Datei wie dieser.readFile
ist schon async, wenn Sie auf der Suche für die sync-version, sein name ist.readFileSync
.fs/promises
als der Knoten 10. Hinweis: die API ist experimentell: nodejs.org/api/fs.html#fs_fs_promises_apihttps://nodejs.org/dist/latest-v6.x/docs/api/fs.html#fs_fs_readfile_file_options_callback
https://nodejs.org/dist/latest-v6.x/docs/api/fs.html#fs_fs_readfilesync_file_options
Finden Sie alle Nutzung der Node.js auf der Dateisystem-docs!
hoffe, diese Hilfe für Sie!
Funktion parseIt(){
}
async function test(){
}
test();
Mit fs-extra Paket ist ganz einfach:
Sync:
Async:
mit Knoten-fs-extra (async await)
Wenn Sie auf der Suche nach einer Komplettlösung für
Async
laden der JSON-Datei ausRelative Path
mit FehlerbehandlungVerzeichnis-Struktur: