使用简单Key中的节点js在javascript中读取嵌套的json文件。价值对格式

时间:2016-11-24 13:06:51

标签: javascript json node.js npm

我一直在使用复杂的嵌套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等)。

请有人帮我解决此问题。请举例说明一些更好的解决方案。

1 个答案:

答案 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 += '&nbsp;';  // HTML space character
  }
  return result;
}
window.onload = function() {
  var log = document.getElementById('log');
  var result = readAllJson(data, 0);
  log.innerHTML = result;
}
</script>