JSON合并和覆盖数组

JSON合并和覆盖数组,json,node.js,Json,Node.js,我想合并覆盖两个json对象。这里的困难在于合并在一个数组中。知道在哪里合并的唯一方法是使用“name”属性 有没有一个简单的解决方案来满足我对当前结构的需求 LI>您是否考虑更改JSON结构,比如将名称作为键来简化合并? 我的主要目标是: { "servers": { "services": [ { "name": "api" "prop1": "XXX",

我想合并覆盖两个json对象。这里的困难在于合并在一个数组中。知道在哪里合并的唯一方法是使用“name”属性

  • 有没有一个简单的解决方案来满足我对当前结构的需求
  • <> LI>您是否考虑更改JSON结构,比如将名称作为键来简化合并? 我的主要目标是:

       {
        "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']);