【问题标题】:Editing JSON files in NodeJS and DiscordJS在 NodeJS 和 DiscordJS 中编辑 JSON 文件
【发布时间】:2021-01-09 12:18:58
【问题描述】:

是的,所以我正试图将我的头脑围绕编辑(附加数据)到 J​​SON 文件。 文件(users.json)如下所示:

{
  "users": {
    "id": "0123456789",
    "name": "GeirAndersen"
  }
}

现在我想将用户添加到此文件,并保留格式,这是我似乎无法着手的地方。我现在已经花了很多时间尝试、阅读、再尝试……但无论如何,我都无法得到我想要的结果。

在我的 .js 文件中,我从 json 文件中获取数据,如下所示:

const fs = require('fs').promises;

let data = await fs.readFile('./test.json', 'utf-8');
let users = JSON.parse(data);

console.log(JSON.stringify(users.users, null, 2));

此控制台日志显示了应有的内容:

{
  "id": "0123456789",
  "name": "GeirAndersen"
}

为了测试,我直接在代码中定义了一个新用户,像这样:

let newUser = {
  "id": '852852852',
  "name": 'GeirTrippleAlt'
};
console.log(JSON.stringify(newUser, null, 2));

此控制台日志还显示如下数据:

{
  "id": "852852852",
  "name": "GeirTrippleAlt"
}

到目前为止一切都很好,但是现在我想将最后一个加入 users.users ,我只是不知道如何正确地做到这一点。我已经尝试了很多版本和迭代,我都记不住了。 最后尝试:

users.users += newUser;
users.users = JSON.parse(JSON.stringify(users.users, null, 2));

console.log(JSON.parse(JSON.stringify(users.users, null, 2)));
console.log(users.users);

这两个控制台都记录相同的内容:

[object Object][object Object]

我想要实现的是:我想最终得到:

{
  "users": {
    "id": "0123456789",
    "name": "GeirAndersen"
  },
  {
    "id": "852852852",
    "name": "GeirTrippleAlt"
  }
}

当我走到这一步时,我将写回 .json 文件,但这部分不是问题。

【问题讨论】:

    标签: javascript node.js json discord.js


    【解决方案1】:

    这不是一个真正有效的数据结构,因为您试图将另一个对象添加到一个对象而不给该值一个 key

    我认为您真正要寻找的是“用户”是一组用户。

    {
      "users": [
        {
          "id": "0123456789",
          "name": "GeirAndersen"
        },
        {
          "id": "852852852",
          "name": "GeirTrippleAlt"
        }
      ]
    }
    

    您可以轻松地在 JS 中创建一个数组,并将 push() 新项添加到您的数组中。你JSON.stringify() 没问题。

    const myValue = {
      users: []
    };
    
    const newUser = {
      'id': '0123456789',
      'name': "GeirAndersen'
    };
    
    myValue.users.push(newUser);
    
    const strigified = JSON.stringify(myValue);
    

    【讨论】:

    • 我正在考虑使用数组,因为 .push() 的可能性。测试了新代码,并将其定义为数组,我确实得到了可接受的结果。感谢您花时间回答!
    • 我想关键问题是,你想做什么?您是否正在尝试收集用户列表?您是否尝试将其他用户列表附加到用户(也是数组)?
    • 现在看,我确实回答了你的问题。 :)
    猜你喜欢
    • 2018-07-25
    • 1970-01-01
    • 2021-10-09
    • 2021-06-27
    • 2018-05-31
    • 2018-04-19
    • 2019-04-08
    • 2018-04-27
    • 1970-01-01
    相关资源
    最近更新 更多