360 Stimmen

Gibt es eine Anforderung für JSON in Node.js?

Ich möchte ein paar JSON-Dateien in meinen JavaScript-Code einbinden, die sich im gleichen Verzeichnis wie meine JavaScript-Quelldatei befinden.

Wenn ich eine weitere JavaScript-Datei einschließen möchte, könnte ich einfach require verwenden. Jetzt verwende ich readFileSync und __dirname, um das JSON zu erhalten, was ich für einen hässlichen Weg halte.

Gibt es etwas Ähnliches wie require, das es mir ermöglicht, eine JSON-Datei zu laden?

0 Stimmen

Siehe diese ähnliche Frage: stackoverflow.com/questions/4662851/…

0 Stimmen

@coen Was meinen Sie mit "eine JSON-Datei einfügen"? Lesen und analysieren Sie es? Wenn ja, mögliches Duplikat von: stackoverflow.com/questions/5726729/…

3 Stimmen

Ja; lesen und parsen. Aber dies bedeutet speziell das Lesen einer Datei, ähnlich dem Lesen einer js-Datei, also handelt es sich nicht um ein Duplikat und goatslackers Antwort ist immer noch gültig.

610voto

goatslacker Punkte 9682

Ab dem Node v0.5.x kannst du dein JSON genauso wie eine js-Datei einbinden.

var someObject = require('./somefile.json')

In ES6:

import someObject from './somefile.json'

70voto

serkan Punkte 6275

JSON-Dateien benötigen keine explizite Exports-Anweisung. Sie müssen sie nicht exportieren, um sie als Javascript-Dateien zu verwenden.

Sie können also einfach require für gültige JSON-Dokumente verwenden.

data.json

{
  "name": "Freddie Mercury"
}

main.js

var obj = require('data.json');

console.log(obj.name); 
//Freddie Mercury

54voto

rajmobiapp Punkte 819

Zwei der häufigsten Wege, um zu importieren

Erster Weg :

let jsonData = require('./JsonFile.json')

let jsonData = require('./JsonFile') // funktioniert auch, wenn wir .json auslassen

ODER

import jsonData from ('./JsonFile.json')

Zweiter Weg :

  1. synchron

    const fs = require('fs')
    let jsonData = JSON.parse(fs.readFileSync('JsonFile.json', 'utf-8'))
  2. asynchron

    const fs = require('fs')
    let jsonData = {}
    fs.readFile('JsonFile.json', 'utf-8', (err, data) => {
      if (err) throw err
    
      jsonData = JSON.parse(data)
    })

Hinweis:

  1. Wenn sich JsonFile.json ändert, erhalten wir nicht die neuen Daten, auch wenn wir require('./JsonFile.json') erneut ausführen

  2. Das fs.readFile oder fs.readFileSync wird immer die Datei erneut lesen und Änderungen abrufen

25voto

Raynos Punkte 162170

Nein. Verwenden Sie entweder readFile oder readFileSync (Letzteres nur zur Startzeit).

Oder verwenden Sie eine vorhandene Bibliothek wie

Alternativ schreiben Sie Ihre Konfiguration in einer js-Datei anstelle einer json-Datei wie folgt

module.exports = {
  // json
}

10voto

som Punkte 1739

Ein cleveres nicht-caching asynchrones One-Liner für Node 15 Module:

import { readFile } from 'fs/promises';

const data = await readFile('{{ path }}').then(json => JSON.parse(json)).catch(() => null);

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