在json对象中添加额外的文本

时间:2018-04-26 16:07:30

标签: javascript json node.js

我使用以下代码

创建一个JSON对象
var config = {"config": {
      "example": false,
      "example2": true,
    }
}; 

我想有条件地在配置对象的中间添加(或不添加)某些值。我尝试了以下方法:

var additionalconfig = "";
if(additionalconfig){
    additionalConfig = {"additional1":true,
          "additional2":2};
  }

var config = {"config": {
      "example": false,
      additionalConfig,
      "example2": true,
    }
};

我添加了额外的配置作为额外的节点(列表?),这不是我想要的。我的预期结果是:

"config": {
      "example": false,
      "additional1":true,
      "additional2":2
      "example2": true,
    }

我尝试使用additionalconfig[0]删除该节点,但收到错误Unexpected token [。比我尝试将其添加为字符串

additionalConfig = '"additional1":true,
          "additional2":2';

但我也有错误。你知道它是否有可能实现这个目标,如果是的话怎么样?我需要将配置添加到一个确切的位置,而不仅仅是合并两个对象

3 个答案:

答案 0 :(得分:1)

您无法在Javascript Object的中间添加其他属性,您可以做的就是可以在Object的开头或末尾附加属性。

var config = {
    "config": {
        "example": false,
        "example2": true,
    }
};

var additionalConfig = {
    "additional1": true,
    "additional2": 2
};

var config1 = config;

//post-append
config = { ...config,
    config: { ...config.config,
        ...additionalConfig
    }
}

console.log(config);

//pre-append

config1 = { ...config1,
    config: { ...additionalConfig,
        ...config1.config

    }
}

console.log(config1);

答案 1 :(得分:0)

您可以使用Object.assign(....)轻松完成。

检查以下示例:

var config = {
  "config": {
    "example": false,
    "example2": true,
  }
};

var additionalconfig = true; // lets add the additional config.
if (additionalconfig) {
  additionalConfig = {
    "additional1": true,
    "additional2": 2
  };
} else {
  additionalConfig = {};
}

config.config = Object.assign(config.config, additionalConfig);

console.log(config)

答案 2 :(得分:0)

var config = {
      "example": false,
      "example2": true    
}; 

additionalConfig = {"additional1":true,
                    "additional2":2};

var newConfig = {};

for(var e in config){
    if(e === "example2"){
        for (var o in additionalConfig){
            newConfig[o] = additionalConfig[o];
        };
    }

    newConfig[e] = config[e];

}

config = Object.assign(newConfig);

{example:false,additional1:true,additional2:2,example2:true}