zoukankan      html  css  js  c++  java
  • 递归遍历JSON树

    递归遍历JSON树

    前几天有个人问我,json串的层级无限深,但在json串中的key是已知的,在json串中的value,有些事Object,有些是Array,如何把这些层级无限深的key所对应的value,若是Object,转为Array。

    首先,如果遇到了这个层级无限深的问题,肯定是要用到递归的,那么递归的出口在哪里?就是判断,该key所对应的value值,是否是Object。

    直接上代码

     1 function traversalJson(jsonObj) {
     2     // 循环所有键
     3     for(let key in jsonObj) {
     4         let element = jsonObj[key];
     5         //如果对象类型为object类型且数组长度大于0 或者 是对象 ,继续递归解析
     6         if(element.length > 0 && typeof(element) === "object" || typeof(element) === "object") {
     7             //当键值为配置项的这些键值时候,并且这些类型为Object,不是数组时候,使之变为数组。
    8 for(let i=0;i<arrConfig.length;i++){ 9 if(key===arrConfig[i]&& !(element instanceof Array)){ 10 jsonObj[key] = [element]; 11 } 12 } 13 traversalJson(element); 14 } else { 15 //不是对象或者数组,则不做操作 16 } 17 } 18 }
      //arrConfig是配置的数组
  • 相关阅读:
    class和struct
    类内初始值(c++11)
    默认初始化、值初始化
    聚合类
    对象
    排序算法的比较
    快速排序
    堆排序
    ubunu设置java命令为全局的命令-添加到全局环境变量
    Mina笔记
  • 原文地址:https://www.cnblogs.com/DonaHero/p/10412268.html
Copyright © 2011-2022 走看看