我一直在使用复杂的嵌套JSON文件,如下所示:
更新::嵌套的JSON文件片段(示例)
{
"sample": {
"someitem": {
"thesearecool": [
{
"neat": "wow"
},
{
"neat": "tubular"
}
]
},
"coolcolors": [
{
"color":"red",
"hex": "ff0000"
},
{
"color":"blue",
"hex":"0000ff"
}
]
}
}
我想遍历此JSON文件中的每个值。 我尝试了很多npm nodejs包,使嵌套的JSON成为简单易读的JSON格式。(NPM Packages-> flattenr,flat等)。
请有人帮我解决此问题。请举例说明一些更好的解决方案。
答案 0 :(得分:1)
是的,这是一个很好的递归问题。 所以,一般的想法是一个带有for循环的函数。
可能会发生两件事情:要么是一个值,要么打印出来。或者它是一个对象,然后你将该对象放在同一个函数中。
<div id="log"></div>
<script>
var data = {
"sample": {
"someitem": {
"thesearecool": [
{
"neat": "wow"
},
{
"neat": "tubular"
}
]
},
"coolcolors": [
{
"color":"red",
"hex": "ff0000"
},
{
"color":"blue",
"hex":"0000ff"
}
]
}
};
function readAllJson(data, level) {
var resultString = '';
for(var i in data) {
var type = typeof data[i];
switch(type) {
case 'object':
resultString += indent(level) + i +':<br/>'+ readAllJson(data[i], level + 1); // recursion
break;
default:
resultString += indent(level) + i +': '+ data[i] + '<br/>';
break;
}
}
return resultString;
}
function indent(level) {
var result = '';
for(var i=0; i<level; i++) {
result += ' '; // HTML space character
}
return result;
}
window.onload = function() {
var log = document.getElementById('log');
var result = readAllJson(data, 0);
log.innerHTML = result;
}
</script>