json数据扁平化处理(适用于接口传参复杂数据加密处理)

/*
* name:json数组拉平处理
* data:json对象或者数组
* k:前面开始可传空
*/
function expandJsonTool(data, k) {
var jmap = {}
var expandJson = function(jstr, mapIndex) {
if (jstr instanceof Array) {
for (var i in jstr) {
expandJson(jstr[i], `${mapIndex}[${i}]`);
}
} else if (jstr instanceof Object) {
for (var i in jstr) {
// 如果mapIndex为false,null,''时,则不加初始索引
if (!mapIndex) {
var key = i;
} else {
var key = `${mapIndex}.${i}`;
}
// Array 是 Object 的子集,先判断是否为 Array,如果是,则不走Object的判断
if (jstr[i] instanceof Array) {
for (var j in jstr[i]) {
expandJson(jstr[i][j], `${key}[${j}]`);
}
} else if ((jstr[i] instanceof Object)) {
expandJson(jstr[i], key);
} else {
jmap[key] = jstr[i]
}
}
}
}
expandJson(data, k);
return jmap
}

  

原始数据

{
"bandEndPrize": [{
"flag": 0,
"gameId": 0,
"limit": 0,
"orderBy": 0,
"prizeIcon": "",
"prizeName": "",
"prizeTime": "",
"prizeType": "",
"unit": ""
}],
"bandIngPrize": [{
"flag": 0,
"gameId": 0,
"limit": 0,
"orderBy": 0,
"prizeIcon": "",
"prizeName": "",
"prizeTime": "",
"prizeType": "",
"unit": ""
}],
"bandTaskRequest": [{
"addGameWeekTaskReqs": [{
"orderBy": 0,
"score": 0,
"taskCode": "",
"taskValue": 0
},
{
"orderBy": 0,
"score": 0,
"taskCode": "",
"taskValue": 0
}
],
"gameId": 0,
"gameWeekEnd": "",
"gameWeekId": 0,
"gameWeekStart": "",
"id": 0,
"seaTaskType": 0,
"taskType": 0
}]
};

  

处理后的数据

{
"bandEndPrize[0].flag": 0,
"bandEndPrize[0].gameId": 0,
"bandEndPrize[0].limit": 0,
"bandEndPrize[0].orderBy": 0,
"bandEndPrize[0].prizeIcon": "",
"bandEndPrize[0].prizeName": "",
"bandEndPrize[0].prizeTime": "",
"bandEndPrize[0].prizeType": "",
"bandEndPrize[0].unit": "",
"bandIngPrize[0].flag": 0,
"bandIngPrize[0].gameId": 0,
"bandIngPrize[0].limit": 0,
"bandIngPrize[0].orderBy": 0,
"bandIngPrize[0].prizeIcon": "",
"bandIngPrize[0].prizeName": "",
"bandIngPrize[0].prizeTime": "",
"bandIngPrize[0].prizeType": "",
"bandIngPrize[0].unit": "",
"bandTaskRequest[0].addGameWeekTaskReqs[0].orderBy": 0,
"bandTaskRequest[0].addGameWeekTaskReqs[0].score": 0,
"bandTaskRequest[0].addGameWeekTaskReqs[0].taskCode": "",
"bandTaskRequest[0].addGameWeekTaskReqs[0].taskValue": 0,
"bandTaskRequest[0].addGameWeekTaskReqs[1].orderBy": 0,
"bandTaskRequest[0].addGameWeekTaskReqs[1].score": 0,
"bandTaskRequest[0].addGameWeekTaskReqs[1].taskCode": "",
"bandTaskRequest[0].addGameWeekTaskReqs[1].taskValue": 0,
"bandTaskRequest[0].gameId": 0,
"bandTaskRequest[0].gameWeekEnd": "",
"bandTaskRequest[0].gameWeekId": 0,
"bandTaskRequest[0].gameWeekStart": "",
"bandTaskRequest[0].id": 0,
"bandTaskRequest[0].seaTaskType": 0,
"bandTaskRequest[0].taskType": 0
}

  

json数据扁平化处理的更多相关文章

  1. andlua,andlua发送http请求,并解析json数据

    andlua发送http请求,并解析json实例 import'cjson'import 'http'--导入cjson库url = 'https://www.baidu,com'--设置urlHtt ...

  2. js树形数据结构的扁平化

    前面我们封装了一维数组(具备树形结构相关属性)处理成树形结构的方法:https://www.cnblogs.com/coder--wang/p/15013664.html 接下来我们来一波反向操作,封 ...

  3. [转]easyui tree 模仿ztree 使用扁平化加载json

    原文地址:http://my.oschina.net/acitiviti/blog/349377 参考文章:http://www.jeasyuicn.com/demo/treeloadfilter.h ...

  4. MongoDB 聚合嵌入的数组(扁平化数据+管道)

    MongoDB学习教程 先看下要操作的主要数据结构: { "_id" : "000015e0-3e9c-40b3-bd0d-6e7949f455c0", &qu ...

  5. java 扁平化输出json所有节点key/value

    本章主要介绍用java实现扁平化输出json所有节点key/value(包含所有内层子节点) 1.json结构 目的输出bill_list下的datalist里的子节点key/value 2.实现代码 ...

  6. js数据结构处理--------扁平化数组处理为树结构数据

    将扁平化的数组处理为树结构数据,我们可以利用对象来处理,对象的复制是浅拷贝,指向相同的内存地址: var arr = [ { id: 0, pid: -1, name: 'sadas' }, { id ...

  7. JMeter 压力測试使用函数和 CSV 文件參数化 json 数据

            在 http Load Testing 中.json 数据的提交是个让人头疼的问题.本文具体介绍怎样进行 JMeter 的 json 測试提交,以及怎样将其參数化.        St ...

  8. tensorflow tensor Flatten 张量扁平化,多通道转单通道数据

    slim.flatten(inputs,outputs_collections=None,scope=None) (注:import tensorflow.contrib.slim as slim)  ...

  9. AppBox升级进行时 - 扁平化的权限设计

    AppBox 是基于 FineUI 的通用权限管理框架,包括用户管理.职称管理.部门管理.角色管理.角色权限管理等模块. AppBox v2.0中的权限实现 AppBox v2.0中权限管理中涉及三个 ...

随机推荐

  1. asp.net core 使用中间件拦截请求和返回数据,并对数据进行加密解密。

    原文:asp.net core 使用中间件拦截请求和返回数据,并对数据进行加密解密. GitHub demo https://github.com/zhanglilong23/Asp.NetCore. ...

  2. 字符串格式的Url的截取

    一,我们先在看在页面上获取的URL的处理,如下方法: //获取全部URL string Url = Request.Url.ToString(); Url += "</br>&q ...

  3. js自增++与自减--运算符

    /** * 自增(++)与自减(--)运算符 */ // 自增示例 var a = 1, c, d, e; console.log(`a++ = ${a++}`); // a++ = 1 consol ...

  4. 使用Python+Qt时解决QTreeWidget中的内容超出边界后自动隐藏的问题

    问题: 默认情况下,内容超出边界后会自动省略,以...代替,而且无法出现水平滚动条 解决方法: 把VerticalScrollBar和HorizontalScrollBar的值都设为ScrollBar ...

  5. mysql 存储引擎介绍2

    了解MYSQL的都知道,在MYSQL中建立任何一张数据表,在其数据目录对应的数据库目录下都有对应表的.frm文件,.frm文件是用来保存每个数据表的元数据(meta)信息,包括表结构的定义等,.frm ...

  6. mui使用总结

    mui是一个高性能的HTML5开发框架,从UI到效率,都在极力追求原生体验:这个框架自身有一些规则,刚接触的同学不很熟悉,特总结本文:想了解mui更详细的信息,请访问mui官网 DOM结构 关于mui ...

  7. 同时安装CUDA8.0和CUDA9.0

    http://geyao1995.com/CUDA8_CUDA9/ tensorflow1.5版本竟然不支持CUDA8.0了 卸载是不可能卸载的 1.原料准备 CUDA9.0下载:https://de ...

  8. shell(计算机壳层)(一)

    在计算机科学中,Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器).它类似于DOS下的command和后来的cmd.exe.它接收用户命令,然后调用相应的应用程序. wi ...

  9. AcWing 234. 放弃测试 (01分数规划)打卡

    题目:https://www.acwing.com/problem/content/236/ 题意:给你一个方程,可以有k个不选,要求最优 思路:看了一下这个方程就知道是01分数规划的模板题,它可以选 ...

  10. AcWing 225. 矩阵幂求和 (矩阵快速幂+分治)打卡

    题目:https://www.acwing.com/problem/content/227/ 题意:给你n,k,m,然后输入一个n阶矩阵A,让你求  S=A+A^2+A^3.+......+A^k 思 ...