js遍历多层json

JavaScript08

js遍历多层json,第1张

我看了下你的数据有问题,'a'的值放了3个数组,这肯定是错的,应该在3个数组外面套上一层[],正确的数据结构应该是这样的。

[

{"a":

[

[

{"b":

[{"c":"one"},{"d":"1"}]

}

],

[

{"b":

[{"c":"two"},{"d":"2"}]

}

],

[

{"b":

[{"c":"three"},{"d":"3"}]

}

]

]

}

]

遍历代码如下:

for (var i = 0i <arr.lengthi++) {

for (var j = 0j <arr[i]['a'].lengthj++) {

// 做你需要的操作对c值

console.log(arr[i]['a'][j][0]['b'][0]['c'])

}

}

如果还有问题请像我提问,前端相关资料。

如果这是一次返回的json,那么你要分成3级显示,就需要分3级显示的不同点在那里

观察了你的json数据,json的字段都是相同的,因此想通过字段不同加以区别行不通,但是我看到你json字符串中有一个parentId,而且每一个的parentId都是不一样,我想你可以通过这个加以区分:

if(parentId == "1001"){alert("学段")}if(parentId == "1002"){alert("学科")}if(parentId == "1003"){alert("版本")}

使用递归,下面是一个JSON转String的函数应该会对你有所帮助

function jsonToString (obj){  

var THIS = this   

switch(typeof(obj)){  

case 'string':  

return '"' + obj.replace(/(["\\])/g, '\\$1') + '"'  

case 'array':  

return '[' + obj.map(THIS.jsonToString).join(',') + ']'  

case 'object':  

if(obj instanceof Array){  

var strArr = []  

var len = obj.length  

for(var i=0 i<len i++){  

strArr.push(THIS.jsonToString(obj[i]))  

}  

return '[' + strArr.join(',') + ']'  

}else if(obj==null){  

return 'null'  

}else{  

var string = []  

for (var property in obj) string.push(THIS.jsonToString(property) + ':' + THIS.jsonToString(obj[property]))  

return '{' + string.join(',') + '}'  

}  

case 'number':  

return obj  

case false:  

return obj  

}  

}