Node.Js 向文件写入和读取数组
Posted
技术标签:
【中文标题】Node.Js 向文件写入和读取数组【英文标题】:Node.Js write and read Array to/from File 【发布时间】:2020-10-15 19:54:15 【问题描述】:我有一个 NodeJs 小程序,我想将用户数组(包含对象)保存到文件中,我正在这样做:
const fs = require('fs');
const util = require('util');
fs.writeFileSync('data/inventur_users.json', util.inspect(users), 'utf-8');
文件 inventur_Users.json 中的输出是:
[ BU4AFLx3cUYqdjvYPci7: id: '5LkOWtVFcqz29UpsAAAC',
name: 'p.langkau@scharr.de',
rechte: 'vollzugriff',
client_ID: 'BU4AFLx3cUYqdjvYPci7' ]
现在我正在使用此代码重新读取文件:
filedata = fs.readFileSync('data/inventur_users.json', 'utf-8');
我的问题是我只得到一个字符串,我不知道如何将字符串转换回包含对象的数组。
提前致谢,帕特里克
【问题讨论】:
【参考方案1】:首先
[ BU4AFLx3cUYqdjvYPci7: id: '5LkOWtVFcqz29UpsAAAC',
name: 'p.langkau@scharr.de',
rechte: 'vollzugriff',
client_ID: 'BU4AFLx3cUYqdjvYPci7' ]
不是一个有效的 json,你可以从这里验证它https://jsonlint.com/
有效的 json 看起来像
[
"BU4AFLx3cUYqdjvYPci7":
"id": "5LkOWtVFcqz29UpsAAAC",
"name": "p.langkau@scharr.de",
"rechte": "vollzugriff",
"client_ID": "BU4AFLx3cUYqdjvYPci7"
]
然后你可以直接在变量中请求.json
文件的内容
const filedata = require('data/inventur_users.json');
【讨论】:
感谢您的回复,如何将数组转换为json?如果我导入 json,我可以像使用数组一样使用它吗?帕特里克[1, 2, 3]
是一个有效的 json,因此您可以将其直接存储在 json 文件中,并且在需要时,是的,您可以像数组一样直接使用它。您可以使用jsonlint.com 来验证什么是有效的json,什么不是
所以我能够将数组导出到一个有效的 Json,但是如果我想用 require 导入它,我会收到这个错误:'错误:找不到模块'data/inventur_users.json'但是json 在那个目录中
试试 require('./data/inventur_users.json');
现在我可以读取 json,但它给了我一个 json 字符串,开头和结尾没有“”【参考方案2】:
您可以使用JSON.parse()
将字符串转换回javascript 对象:
filedata = JSON.parse(fs.readFileSync('data/inventur_users.json', 'utf-8'));
您还应该首先使用JSON.stringify()
来保存文件:
fs.writeFileSync('data/inventur_users.json', JSON.stringify(util.inspect(users)), 'utf-8');
【讨论】:
我按照你的例子做了,但 filedata 仍然是一个字符串。 你也用JSON.stringify(...)
保存文件了吗?
这里可以看到代码、json和输出:pastebin.com/nZqZNdpy以上是关于Node.Js 向文件写入和读取数组的主要内容,如果未能解决你的问题,请参考以下文章