JSON合并和覆盖数组
我想合并覆盖两个json对象。这里的困难在于合并在一个数组中。知道在哪里合并的唯一方法是使用“name”属性JSON合并和覆盖数组,json,node.js,Json,Node.js,我想合并覆盖两个json对象。这里的困难在于合并在一个数组中。知道在哪里合并的唯一方法是使用“name”属性 有没有一个简单的解决方案来满足我对当前结构的需求 LI>您是否考虑更改JSON结构,比如将名称作为键来简化合并? 我的主要目标是: { "servers": { "services": [ { "name": "api" "prop1": "XXX",
{
"servers": {
"services": [
{
"name": "api"
"prop1": "XXX",
"prop2": "XXX"
},
{
"name": "web"
"prop1": "XXX",
"prop2": "XXX"
}
]
}
}
“web”服务需要过度使用:
{
"servers": {
"services": [
{
"name": "web"
"prop1": "overriden value"
}
]
}
}
结果对象应为:
{
"servers": {
"services": [
{
"name": "api"
"prop1": "XXX",
"prop2": "XXX"
},
{
"name": "web"
"prop1": "overriden value",
"prop2": "XXX"
}
]
}
}
我已经制作了一个节点包,这有点过分了 但使用任何合适的合并工具,它都会保留索引:
// This is pseudo code:
var a = [{...}, {...}, {...}]
// to override object at index 1 you should be able to do this:
merge(a, [{/*intentional empty object, so we get index up*/}, 'new value at index 1']);
那么问题是什么呢?您可以迭代数组并更改符合某些条件的值,也可以更改json结构。这真的不漂亮,但它确实有用谢谢分享,我希望我能投票,但需要15个声誉:)@Zaibes没关系,这不是关于投票等等,而是关于帮助人们。
// This is pseudo code:
var a = [{...}, {...}, {...}]
// to override object at index 1 you should be able to do this:
merge(a, [{/*intentional empty object, so we get index up*/}, 'new value at index 1']);