for...in循环取Json数据

  var result = {
       "Tables":{
           "B2B_DS_ORDERMX0":{
               "ordernum":"tables-0[0] 未定,int,10",
           },
           "B2B_DS_ORDERHZ1":{
               "ordernum":"tables-1[0] 未定,int,10",
               "hasChild":{"type":"tables-1[1]","value":"12"}
           }
       },
       "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",所以只要通过循环判断对象属性值的类型,即可知道是否存在子集

解决方法:

 1  function makearr(jsonarr){
 2         let arr = [];
 3
 4         for(let i in jsonarr){
 5           //   console.log(jsonarr[i]);
 6
 7             if(typeof jsonarr[i] == "object"){
 8                 var ret = {
 9                     "text":i,
10                     "expanded":true,
11                     "field":i
12                 };
13                 ret.children = makearr(jsonarr[i]);
14
15             }else{
16                 let _arr = jsonarr[i].split(",");
17                 var ret = {
18                     "text":i,
19                     "leaf":true,
20                     "field":i
21                 };
22             }
23             arr.push(ret);
24         }
25
26         return arr;
27     }
28
29
30 var _arr1 = makearr(result.Tables);
31 console.log(_arr1);
32 var _arr2 = makearr(result.Json);
33 console.log(_arr2);

输出结果:

原文地址:https://www.cnblogs.com/ss977/p/8545259.html

时间: 2024-08-30 17:33:02

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

java对象转JSON JS取JSON数据

JsonConfig config = new JsonConfig(); config.setJsonPropertyFilter(new PropertyFilter() { @Override public boolean apply(Object arg0, String arg1, Object arg2) { // 过滤掉对象里的包含自己的属性(自己关联自己) if (arg1.equals("wareTypes") || arg1.equals("skillS&

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":"[{/"text/":/"王家湾/",/"value/":/"9/"},{/"text/":/"李家湾/",/"valu e/":/"10

JS 循环遍历JSON数据

JSON数据如:{"options":"[{/"text/":/"王家湾/",/"value/":/"9/"},{/"text/":/"李家湾/",/"value/":/"10/"},{/"text/":/"邵家湾/",/"value/":/"13/

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

工作中往往遇到这种情况,保留用户操作痕迹,比如用户选择过得东西,用户进入其它页面再返回来用户选择的的数据还在. 比如:1.购物车列表中勾选某些,点击任意一项,前往详情页,再返回购物车依旧需要呈现勾选状态           2.勾选人员后,前往别的页面,再次返回,人员依旧程勾选状态           3.等等.... 解决方法:1.把用户选择的数据在本地保存一份 2.进入当前页面拿缓存数据和新数据(从后台获取的数据)进行对比,然后进行对比渲染 在做数据比对的时候,可以通过嵌套for循环,一层f

jQuery的Autocomplete插件的远程url取json数据的问题

关于远程返回的json数据的展示,以前一样的代码,如果是本地写好的json串数据,插件显示就没有问题,一旦换成ulr方式读取一样的数据,插件就不能正常显示问题了. 今天偶然搜索资料找到一篇csdn上有人提问的问题,也是相同的问题 http://topic.csdn.net/u/20090703/14/8d349262-8ca1-4bf5-998d-3a0712412149.html 有高人解答了 $("#autocomplete").autocomplete("data.as

ajax取json数据——简单的

json数据:json4.json <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <table> <tbody id="tbody1"></tbody> </table> </body> &l

jmeter压测学习3-提取json数据里面的token参数关联

前言 现在很多接口的登录是返回一个json数据,token值在返回的json里面,在jmeter里面也可以直接提取json里面的值. 上一个接口返回的token作为下个接口的入参. 案例场景 我现在有一个登陆接口A,登陆成功后返回一个token值.有一个获取绑定卡号的接口B,但是接口B必须要先登录后传登录的token才能访问 A接口登录接口文档基本信息 访问地址:http://127.0.0.1:8000/api/v1/login/ 请求类型:POST 请求头部:application/json

基于nodejs模拟浏览器post请求爬取json数据

今天想爬取某网站的后台传来的数据,中间遇到了很多阻碍,花了2个小时才请求到数据,所以我在此总结了一些经验. 首先,放上我所爬取的请求地址http://api.chuchujie.com/api/?v=1.0: 下面我们开始爬取数据. 一.写一个基于nodejs的爬虫 1.引入所需模块 这里需要引入http模块(nodejs用来向浏览器发送http请求的模块)和querystring模块(把前台传过来的对象形式的参数转化成字符串形式): var http = require("http"

js取json数据笔记

var jsondate={"con":[{"name":"hello","sex":"M"},{"name":"world","sex":"W"},{"name":"helloworld" ,"age":"20"}],"con1"