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. db2 load命令装载数据时定位错误出现的位置

    使用如下命令装载数据(注意CPU_PARALLELISM 1): db2 load from filename.del of del replace into tab_name  CPU_PARALL ...

  2. 用java 调用oracle存储过程总结

    SSM-Mybatis调用Oracle存储过程返回结果集(游标)示例 https://www.jianshu.com/p/0ae6d9d66d61 用java调用oracle存储过程总结 //1.ca ...

  3. Linux上部署Springboot相关命令

    ps -ef|grep java 看有关java的进程 ps -ef是显示所有进程信息 后面那个grep是匹配的意思 kill -9 123123 213231 后面两个数字是两个进程的进程号pid, ...

  4. 给元素绑定 class

    <div id="app04"> <label v-bind:class="{'Class1':Class1}">sasjadjagd& ...

  5. Python基础教程(008)--第一个Python程序

    前言: 学会第一个Python程序 了解Python2和Python3的区别 内容 执行Python程序的三种方式 解释器--Python.Python3 交互式-- ipthon 集成开发环境--P ...

  6. [CSP-S模拟测试]:世界线(DFS+bitset)

    题目描述 时间并不是一条单一的线,而是有许多世界线构成的流. 在一些时刻,世界线会发生分裂:同样的,它们也有可能在一些时刻收束在一起.如果将这些时刻抽象成点,那么这些世界线构成的网络,实际上是一张有向 ...

  7. iOS 109个Demo范例

    https://github.com/subdigital/nsscreencast 版权声明:本文为博主原创文章,未经博主允许不得转载.

  8. 探索Redis设计与实现14:Redis事务浅析与ACID特性介绍

    本文转自互联网 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial ...

  9. 屏蔽浏览器默认样式 user agent stylesheet

    user agent stylesheet <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &q ...

  10. svn 版本管理,trunk(主干),branch(分支),merge(合并)

    svn 版本管理,主要对trunk(主干).branch(分支).merge(合并)进行说明. svn作为一个常用的版本管理工具,一些基本操作必须要会,在这里整理一下自己使用svn的一些体会: svn ...