Der*_*air 7 javascript parsing json
在JavaScript中,您可以像这样获取XML节点的子节点......
var children = xml.childeNodes;
Run Code Online (Sandbox Code Playgroud)
我如何得到一个物体的孩子?
var obj = {
prop1: 'stuff',
prop2: 'things',
prop3: 'stuff-n-things'
}
Run Code Online (Sandbox Code Playgroud)
鉴于这样的对象..
var Obj = {
levelOneProp1: 'stuff',
levelOneProp2: 'things',
levelOneProp3: {
levelTwoProp1: 'moreStuff',
levelTwoProp2: 'morethings',
levelTwoProp3: 'morestuff-n-things'
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道哪些属性Obj
有子,所以我可以以递归的方式循环它们.目标是能够提供一个(理论上)无限数量的孩子的数据集,并将他们的值应用于输入元素......这是我到目前为止所拥有的.
function applyData( dataSet ){
var hasChildren = false;
for(var i = 0; i < dataSet.childNodeArrayGoesHere.length; i++){
if(dataSet.detectChildNodesHere){
hasChildren = true;
}
}
if(hasChildren){
for(var j = 0; j < dataSet.childNodeArrayGoesHere.length; i++){
applyData(dataSet[j]);
}
} else {
//apply the key/value pair to an input element
$("input[name" + dataSet.propertyName + "]").val(dataSet.propertyValue);
}
}
Run Code Online (Sandbox Code Playgroud)
您可以迭代对象的所有属性,如下所示:
var o = { prop1: 'this is prop 1', prop2: 'this is prop2'};
for(var propName in o) {
if(o.hasOwnProperty(propName)) {
alert(o[propName]);
}
}
Run Code Online (Sandbox Code Playgroud)
该hasOwnProperty()
函数检查以确保指定的属性实际存在于对象中.在此上下文中使用它可确保您不会获得任何继承的属性.
您可以像这样递归地遍历对象的所有属性。
找到所有的结束节点,按名称选择对应的输入标签,并将值放入其中。
我使用了一个只有两个级别的对象,但它可以与 n 个级别的对象一起使用。
var Obj = {
id1: 'stuff',
id2: 'things',
id3: {
levelTwo1: 'moreStuff',
levelTwo2: 'morethings',
levelTwo3: 'morestuff-n-things'
}
}
function addAttributeInput(obj) {
for (var o in obj) {
if (typeof obj[o] == "object") {
addAttributeInput(obj[o]);
} else {
$("input[name='" + o + "']").val(obj[o]);
}
}
}
addAttributeInput(Obj);
Run Code Online (Sandbox Code Playgroud)