出身背景

我正在使用Node.js进行一些实验,希望将JSON对象从文本文件或.js文件(哪个更好??)读取到内存中,以便我可以从代码中快速访问该对象。我意识到有像蒙哥、阿尔弗雷德等这样的东西,但这不是我现在需要的。

问题

如何使用JavaScript/Node从文本或js文件中读取JSON对象并将其写入服务器内存?


当前回答

使用v8导入断言回答2022

import jsObject from "./test.json" assert { type: "json" };
console.log(jsObject)

动态导入

const jsObject = await import("./test.json", {assert: { type: "json" }});
console.log(jsObject);

更多信息请访问:v8导入断言

其他回答

我找到的最简单的方法是只使用require和JSON文件的路径。

例如,假设您有以下JSON文件。

测试.json

{
  "firstName": "Joe",
  "lastName": "Smith"
}

然后,您可以使用require在node.js应用程序中轻松加载

var config = require('./test.json');
console.log(config.firstName + ' ' + config.lastName);

异步是有原因的!向@mihai扔石头

否则,以下是他在异步版本中使用的代码:

// Declare variables
var fs = require('fs'),
    obj

// Read the file and send to the callback
fs.readFile('path/to/file', handleFile)

// Write the callback function
function handleFile(err, data) {
    if (err) throw err
    obj = JSON.parse(data)
    // You can now play with your datas
}

至少在Node v8.9.1中,您可以

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

并访问JSON对象的所有元素。

使用fs extra包非常简单:

同步:

const fs = require('fs-extra')

const packageObj = fs.readJsonSync('./package.json')
console.log(packageObj.version) 

异步:

const fs = require('fs-extra')

const packageObj = await fs.readJson('./package.json')
console.log(packageObj.version) 

使用v8导入断言回答2022

import jsObject from "./test.json" assert { type: "json" };
console.log(jsObject)

动态导入

const jsObject = await import("./test.json", {assert: { type: "json" }});
console.log(jsObject);

更多信息请访问:v8导入断言