var result = {
       "Tables":{
           "B2B_DS_ORDERMX0":{
               "ordernum":"tables-0[0] 未定,int,10",
           },
           "B2B_DS_ORDERHZ1":{
               "ordernum":"tables-1[0] 未定,int,10",
               "}
           }
       },
       "Json":{
           "_id" : "Json-0[0]订单ID,objectid,32",
           "goodsList" :
           {
               "goodsId" : "Json-1[0]未定,int,10"
           }
       }
   }

以上result为一段json格式代码,要求:分别输出Tables和Json,若Tables和Json有子集,则要包含字段"expanded":true,"children":[子集],一直循环到无子集则包含字段"leaf":true,一开始无子集,则直接"leaf":true

思路分析:

for/in 语句循环遍历对象的属性。 
js中获取key得到某对象中相对应的value的方法:obj.key 
js中根据动态key得到某对象中相对应的value

对象的属性值存在子集,若为数组/对象,则typeof == "object",若不存在子集,则为字符串typeof == "string",所以只要通过循环判断对象属性值的类型,即可知道是否存在子集

解决方法:

  function makearr(jsonarr){
         let arr = [];

         for(let i in jsonarr){
           //   console.log(jsonarr[i]);

             if(typeof jsonarr[i] == "object"){
                 var ret = {
                     "text":i,
                     "expanded":true,
                     "field":i
                 };
                 ret.children = makearr(jsonarr[i]);

             }else{
                 let _arr = jsonarr[i].split(",");
                 var ret = {
                     "text":i,
                     "leaf":true,
                     "field":i
                 };
             }
             arr.push(ret);
         }

         return arr;
     }

 var _arr1 = makearr(result.Tables);
 console.log(_arr1);
 var _arr2 = makearr(result.Json);
 console.log(_arr2);

输出结果:

for...in循环取Json数据的更多相关文章

  1. JS 循环遍历JSON数据 分类: JS技术 JS JQuery 2010-12-01 13:56 43646人阅读 评论(5) 收藏 举报 jsonc JSON数据如:{"options":"[{

    JS 循环遍历JSON数据 分类: JS技术 JS JQuery2010-12-01 13:56 43646人阅读 评论(5) 收藏 举报 jsonc JSON数据如:{"options&q ...

  2. js循环读取json数据,将读取到的数据用js写成表格

    ①js循环读取json数据的方式: var data=[{"uid":"2688","uname":"*江苏省南菁高级中学 022 ...

  3. Vue之循环遍历Json数据,填充Table表格

    简单记一次Vue循环遍历Json数据,然后填充到Table表格中,展示到前端的代码: async getData(id) { const res = await this.$store.api.new ...

  4. 高效遍历匹配Json数据与双层for循环遍历Json数据

    工作中往往遇到这种情况,保留用户操作痕迹,比如用户选择过得东西,用户进入其它页面再返回来用户选择的的数据还在. 比如:1.购物车列表中勾选某些,点击任意一项,前往详情页,再返回购物车依旧需要呈现勾选状 ...

  5. Jmeter-提取Json数据进行关联

      1:Json后置处理器提取结果作为下一个sampler的传入参数 1.1:[线程组]->[简单控制器]->[HTTP sampler]->[Beanshell后置取样器]-> ...

  6. JS 取Json数据中对象特定属性值

    解析JSON JSON 数据 var str = '[{"a": "1","b": "2"}, {"a&quo ...

  7. Js循环读取JSON数据

    <script> $(function () { var jsonString = '{Unid:"1",CustomerName:"宋江",Age ...

  8. JS 循环遍历JSON数据

    JSON数据如:{"options":"[{/"text/":/"王家湾/",/"value/":/" ...

  9. ajax取json数据——简单的

    json数据:json4.json <!DOCTYPE html> <html> <head> <meta charset="utf-8" ...

随机推荐

  1. 理解x64代码模型

    原作者:Eli Bendersky http://eli.thegreenplace.net/2012/01/03/understanding-the-x64-code-models 在编写x64架构 ...

  2. app store上传图片显示错误:未能创建 屏幕快照

    在iTunes Connect中加入一个app后.加入屏幕快照时,依照要求的尺寸上传照片成功,可是在保存的时候提示"未能创建Screenshots for 4-inch iPhone5 an ...

  3. [svc][db]centos7 Mariadb安装

    yum install mariadb-server mariadb -y 修改配置: [mysqld] default-storage-engine = innodb innodb_file_per ...

  4. html页面中js判断浏览器是否是IE浏览器及IE浏览器版本

    HTML里: HTML代码中,在编写网页代码时,各种浏览器的兼容性是个必须考虑的问题,有些时候无法找到适合所有浏览器的写法,就只能写根据浏览器种类区别的代码,这时就要用到判断代码了.在HTML代码中, ...

  5. #include""和#include<>的区别

    一般来说,就是搜索路径不同 #include ""先去搜用户当前路径(也就是调用编译器的路径),然后再去搜用户用-I选项指定的路径,最后再去搜索编译器默认指定的路径(也就是所谓的系 ...

  6. JVM Specification 9th Edition (4) Chapter 4. The class File Format

    Chapter 4. The class File Format Table of Contents 4.1. The ClassFile Structure 4.2. Names 4.2.1. Bi ...

  7. visitor设计模式记录

    数据类型通过枚举来区分是一种简单实用的做法. 缺点是使用的时候需要通过if .switch 去判断什么类型执行什么分支操作,说是缺点其实也要看具体场景.不过如果if代码多会导致代码很长是肯定的. 复杂 ...

  8. journal size

    resize2fs命令出现这个错误“resize2fs: Operation not permitted While trying to add group #6656”,并且在/var/log/me ...

  9. website 合集

    1. oracle  http://asktom.oracle.com ( 英文 ) http://itpub.net ( 中文 ) https://www.oracle.com/communitie ...

  10. 优秀的Android资源

    今天,收藏了一下“优秀的Android资源”,以后有时间也学习学习. 一.开发工具 开发android第一步就是安装开发工具SDK,国内有一些机构和公司对些作了境像,这个网站作了详细统计列表:http ...