【问题标题】:Node.Js write and read Array to/from FileNode.Js 向文件写入和读取数组
【发布时间】: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');

我的问题是我只得到一个字符串,我不知道如何将字符串转换回包含对象的数组。

提前致谢,帕特里克

【问题讨论】:

    标签: node.js arrays file fs write


    【解决方案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
    猜你喜欢
    • 2019-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-19
    • 2017-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多