将 属性 添加到 Javascript 中的 JSON 对象
Adding property to JSON object in Javascript
我正在使用 xml2js
将 xml
转换为 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
}
如果你使用
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]}
我正在使用 xml2js
将 xml
转换为 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
}
如果你使用
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]}