【问题标题】:Adding property to JSON object in Javascript在 Javascript 中向 JSON 对象添加属性
【发布时间】:2016-12-30 08:04:06
【问题描述】:

我正在使用xml2jsxml 转换为js 对象并将新节​​点添加到内容中

Ex1:
<abc>
   <my-node>123</my-node>
   <my-node>456</my-node>
</abc>


Ex2:
<abc>
   <my-node>123</my-node>
</abc>

Ex1 中,my-node 属性将是一个数组,而在Ex2 中,它将是非数组项。

如何将额外的my-node 添加到相同的位置。我可以采用以下格式但正在寻找更好的解决方案?

if(typeof abc.my-node == Array){
   abc.my-node.push(xxx);
} else {
   //create empty array
   //add existing element
   //add xxx
   //set the array to json object
}

【问题讨论】:

    标签: json xml node.js xml2js


    【解决方案1】:

    如果你使用

    function addProp(obj, propName, value) {
      if (propName in obj) {
        if (obj[propName] instanceof Array) {
          obj[propName].push(value);
        }
        else if (typeof obj[propName] !== 'object') {
          obj[propName] = [obj[propName], value];
        }
      }
      else {
        obj[propName] = value;
      }
    }
    
    var abc = {};
    console.log(JSON.stringify(abc));
    addProp(abc, 'my-node', 123);
    console.log(JSON.stringify(abc));
    addProp(abc, 'my-node', 456);
    console.log(JSON.stringify(abc));
    addProp(abc, 'my-node', 789);
    console.log(JSON.stringify(abc));

    那么结果就是

    {}
    {"my-node":123}
    {"my-node":[123,456]}
    {"my-node":[123,456,789]}
    

    【讨论】:

    • 本质上是重构方法;)
    猜你喜欢
    • 1970-01-01
    • 2010-10-18
    • 2018-04-25
    • 2011-11-09
    • 2013-11-07
    • 1970-01-01
    • 1970-01-01
    • 2022-07-21
    • 1970-01-01
    相关资源
    最近更新 更多