for...in循环取Json数据
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数据的更多相关文章
- 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 ...
- js循环读取json数据,将读取到的数据用js写成表格
①js循环读取json数据的方式: var data=[{"uid":"2688","uname":"*江苏省南菁高级中学 022 ...
- Vue之循环遍历Json数据,填充Table表格
简单记一次Vue循环遍历Json数据,然后填充到Table表格中,展示到前端的代码: async getData(id) { const res = await this.$store.api.new ...
- 高效遍历匹配Json数据与双层for循环遍历Json数据
工作中往往遇到这种情况,保留用户操作痕迹,比如用户选择过得东西,用户进入其它页面再返回来用户选择的的数据还在. 比如:1.购物车列表中勾选某些,点击任意一项,前往详情页,再返回购物车依旧需要呈现勾选状 ...
- Jmeter-提取Json数据进行关联
1:Json后置处理器提取结果作为下一个sampler的传入参数 1.1:[线程组]->[简单控制器]->[HTTP sampler]->[Beanshell后置取样器]-> ...
- JS 取Json数据中对象特定属性值
解析JSON JSON 数据 var str = '[{"a": "1","b": "2"}, {"a&quo ...
- Js循环读取JSON数据
<script> $(function () { var jsonString = '{Unid:"1",CustomerName:"宋江",Age ...
- JS 循环遍历JSON数据
JSON数据如:{"options":"[{/"text/":/"王家湾/",/"value/":/" ...
- ajax取json数据——简单的
json数据:json4.json <!DOCTYPE html> <html> <head> <meta charset="utf-8" ...
随机推荐
- FPGA的图像处理技术
最近一段时间一直在研究基于FPGA的图像处理,乘着EEPW这个机会和大家交流一下,自己也顺便总结一下.主要是为了大家对用FPGA做图像处理有个感性的认识,如果真要研究的话就得更加深入学习了.本人水平有 ...
- Eclipse Jetty Integration
http://eclipse-jetty.sourceforge.net/ Introduction Eclipse Jetty Integration provides a launch confi ...
- Linux SWAP 深度解读
概述 本文讨论的swap基于Linux4.4内核代码.Linux内存管理是一套非常复杂的系统,而swap只是其中一个很小的处理逻辑. 希望本文能让读者了解Linux对swap的使用大概是什么样子.阅读 ...
- strtol / strtoll / strtoul / strtoull
function long int strtol (const char* str, char** endptr, int base); —— Convert string to long integ ...
- iOS直播-播放基于RTMP协议的视频
iOS直播-播放基于RTMP协议的视频 流媒体协议介绍 1. 伪流媒体: 渐进式下载 : 边下边存, 文件会保存 使用http协议,也能够实现视频播放, 也能快进快退等, 体验上跟流媒体很像. 优酷, ...
- 详解C#中通过委托来实现回调函数功能的方法
委托:类型安全的指向函数的指针 使用步骤 1:声明一个委托 delegate string DelString(string s) 2:定义一个委托变量 DelString del = new Del ...
- AVCapture编程理解
AVCapture用于媒体采集,在媒体采集的流程中,会存在如下几个对象: AVCaptureDevice.这里代表抽象的硬件设备. AVCaptureInput.这里代表输入设备(可以是它的子类),它 ...
- 解决windows server 2008 r2 右键没有个性化
装完系统发现桌面上只有一个回收站我的电脑 网络邻居 控制板面都没有好像win7家庭版也没有右键–个性化设置上google百度了下 也还漫简单的点左下角的开始-运行:"C:\Windows\s ...
- 今天升级netbean出错
出现:无法初始化 UI netbean 由于ubuntun装的是open jdk 直接删除open jdk就可以 sudo apt-get autoremove open-jdk*
- hdu 5360 Hiking(优先队列+贪心)
题目:http://acm.hdu.edu.cn/showproblem.php? pid=5360 题意:beta有n个朋友,beta要邀请他的朋友go hiking,已知每一个朋友的理想人数[L, ...