在Javascript中向JSON对象添加属性

时间:2016-08-23 13:05:18

标签: json xml node.js xml2js

我正在使用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
}

1 个答案:

答案 0 :(得分:1)

如果您使用

&#13;
&#13;
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));
&#13;
&#13;
&#13;

然后结果是

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