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. C#隐式类型和显示类型

    一,在程序中我们经常会遇到:无法将类型“XXX”隐式装换为“XXX”,如下例子: static void Main(string[] args) { int i; i = "Hello Wo ...

  2. find 文件查找

    目录 find文件查找 1.为什么要使用文件查找 2.根据文件名称查找-name 3.根据文件大小查找-size 4.根据文件类型查找-type f 5.根据文件时间查找-mtime 6.根据文件用户 ...

  3. Java运行显示无待入值

    忘记添加@Param()

  4. 【串线篇】REST风格的请求格式

    1.什么是rest 答出这两点就够了: 1.1 统一接口 rest其实是基于HTTP的,四种方式. RESTful架构风格规定,数据的元操作,即CRUD(create, read, update和de ...

  5. MOSFET学习

    MOS/CMOS集成电路简介及N沟道MOS管和P沟道MOS管 在实际项目中,我们基本都用增强型mos管,分为N沟道和P沟道两种. 我们常用的是NMOS,因为其导通电阻小,且容易制造.在MOS管原理图上 ...

  6. paper 134:结构张量structure tensor(二)

    根据结构张量能区分图像的平坦区域.边缘区域与角点区域. 此算法也算是计算机科学最重要的32个算法之一了.链接的文章中此算法名称为Strukturtensor算法,不过我搜索了一下,Strukturte ...

  7. Python每日一题 003

    将 002 题生成的 200 个激活码(或者优惠券)保存到 MySQL 关系型数据库中. 代码 import pymysql import uuid def get_id(): for i in ra ...

  8. Least Common Ancestors

    /* Least Common Ancestors * Au: Small_Ash */ #include <bits/stdc++.h> using namespace std; con ...

  9. ASP.NET MVC 分页之 局部视图

    using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptograph ...

  10. 【Java架构:基础技术】一篇文章搞掂:Idea

    一.使用技巧 1.1.配置Maven 打开File-Settings打开设置界面 1.2.配置JDK JDK可以设置默认版本,也可以设置针对某个项目 分别对应File-Other Setting-De ...