我有一个对象,看起来像这样:
{
"mark": [
{
"id":1,
"name": "mark",
"age":26
},
{
"id":2,
"name": "mark",
"age":25
}
],
"jack": [
{
"id":1,
"name": "jack",
"age":26
},
{
"id":2,
"name": "jack",
"age": 24,
}
]
}
如果添加了新用户,则输出的内容不会被附加,但会被覆盖或创建为新对象
{
"mark": [
{
"id":1,
"name": "mark",
"age":26
},
{
"id":2,
"name": "mark",
"age":25
}
],
"jack": [
{
"id":1,
"name": "jack",
"age":26
},
{
"id":2,
"name": "jack",
"age": 24,
}
],
} "Josh": [
{
"id":1,
"name": "Josh",
"age":26
},
{
"id":2,
"name": "Josh",
"age": 24,
}
]
预期
如果新的person数据到达我的JSON文件中,则应该将其附加到下一个数组中,其中包含对象数组的键值,
喜欢
{
"mark": [
{
"id":1,
"name": "mark",
"age":26
},
{
"id":2,
"name": "mark",
"age":25
}
],
"jack": [
{
"id":1,
"name": "jack",
"age":26
},
{
"id":2,
"name": "jack",
"age": 24,
}
],
"Josh": [
{
"id":1,
"name": "Josh",
"age":26
},
{
"id":2,
"name": "Josh",
"age": 24,
}
]
}
我在阅读JSON文件后尝试过这种方法
var newObject = array.reduce(function (obj, value) {
var key = `${value.name}`;
if (obj[key] == null) obj[key] = [];
obj[key].push(value);
return obj;
}, {});
console.log(newObject);
fs.appendFile("users.json", newObject, (err) => {
res.send(JSON.stringify(newObject));
});
2条答案
按热度按时间q5iwbnjs1#
类似于已经给出的建议,但是使用 async fs i/o。
还请注意,所有这些都是数据库的功能。
f4t66c6m2#
必须首先从JSON中读取数据,并将新对象追加到JSON数据中,然后将其写回文件。