我正在尝试迭代一个json对象(在javascript中)但它似乎无法正常工作...我写一个recursiv函数非常困惑,所以也许这里的一位专家可以帮助我:)
json对象:
{
"Node": [
{
"Name": {
"#text": "Folder"
}
},
{
"Name": {
"#text": "Folder 2"
}
},
{
"Name": {
"#text": "Folder 3"
},
"Nodes": {
"Node": {
"Name": {
"#text": "Folder 3.1"
},
"Nodes": {
"Node": [
{
"Name": {
"#text": "Folder 3.1.1"
},
"Nodes": {
"Node": {
"Name": {
"#text": "Folder 3.1.1.1"
}
}
}
},
{
"Name": {
"#text": "Test 2"
}
}
]
}
}
}
},
{
"Name": {
"#text": "Folder 4"
}
}
]
}
我尝试解决问题
function newFolder(_data) {
for (var i = 0; i < _data.length; i++) {
if (_data[i].Nodes) {
Ti.API.info("Sub: "); //+ _data[i].Nodes.Node.length );
return newFolder(_data[i].Nodes.Node);
} else {
Ti.API.info("Main: " + _data[i].Name["#text"]);
}
Ti.API.info("Main: " + _data[i].Name["#text"]);
}
}
问题是,函数不会像我想的那样遍历每个元素。
我已经阅读了关于jQuery的一些内容,但我对此并不十分熟悉。加上我正在使用Titanium,我不知道我是否可以使用jquery。
如果有人可以帮我解决这个问题,那会太棒了。)答案 0 :(得分:3)
我认为你的JSON
非常复杂,因为没有必要。如果您有这样的对象:
var data = {
"nodes": [
{ "name": "Folder 1" },
{ "name": "Folder 2" },
{ "name": "Folder 3" },
{
"name": "Folder 4",
"nodes": [
{ "name": "Folder 4.1" },
{
"name": "Folder 4.2",
"nodes": [
{ "name": "Folder 4.2.1" },
{ "name": "Folder 4.2.2" },
{ "name": "Folder 4.2.3" }
]
},
{ "name": "Folder 4.3" }
]
},
{ "name": "Folder 5" }
]
};
您可以通过递归函数:
进行迭代function iterateNodes(data) {
for (var i = 0, l = data.nodes.length; i < l; i++) {
var node = data.nodes[i];
console.log(node.name);
if (node.nodes) {
arguments.callee(node);
}
}
}
iterateNodes(data);
检查FIDDLE Demo。
答案 1 :(得分:0)
没有JSON对象的东西。 JSON是一种格式化数据的方法。您正在尝试通过一个普通的JavaScript对象。您可以在第一个答案here
中查看答案 2 :(得分:0)