对,所以我想把头放在编辑(附加数据)到JSON文件上。 文件(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文件,但这不是问题。
答案 0 :(得分: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);