JSON平铺功能的实现(JS操作JSON数据)
一、什么是JSON平铺
JSON平铺分成两种:
平铺的json转树结构的json
例如:
{
a: 'value',
b: 'b1.value'
}
// 转换成=>
{
a: 'value',
b: {
b1: value,
}
}
树结构转换成平铺的json
例如:
{
"a": {
"a1": 123,
"a2": "value",
"a3": {
"a31": "value"
}
},
"b": "value"
}
// 转换成 =>
[
a.a1,
a.a2,
a.a3.a31,
b
]
用处:
第一种用得比较多,资料也比较多,这里不多介绍,可以看看这:
《平铺的json转树结构的json,请看数据》
第二种貌似不太常见,因为业务需求,需要解析json格式。网上没找到合适的答案,就自己动手实现了一个。
二、第二种实现方法
先列出几个要注意的点:
- 对于含有子节点的key值,并不作为提取对象。
例如: a.a1, a并不需要
- 采用递归的方式解决数据未知层数
- 因为递归时需要不断提取父节点,所以初始化的时候会加入多余的头部。
例如: a:{a1:value}实际转换成:root.a.a1,root就是我们规定的初始化的父节点。
后续可以通过xxx.substr(xxx.indexOf('.') + 1)去掉
实现代码:
<script>
let jsonDataMock = '{"a":{"a1":123,"a2":"value","a3":{}},"b":{"b1":"value","b2":{"b21":"value","b22":{"b221":123,"b222":"value","b223":"value"}}},"c":"value"}';
let options = [];
console.log(jsonDataMock)
function parseJsonRec(jsonData, parent, options){
if(Object.keys(jsonData).length > 0){
Object.keys(jsonData).map(subKey =>{
if(typeof jsonData[subKey] == 'object'){
//递归
parseJsonRec(jsonData[subKey], parent + "." + subKey, options)
}else{
options.push(parent + "." + subKey)
}
});
}
}
function parseJsonWrapper(jsonDataStr){
let jsonData = JSON.parse(jsonDataStr);
if(typeof jsonData == 'object'){
parseJsonRec(jsonData, "root", options)
}
}
parseJsonWrapper(jsonDataMock)
console.log(options)
</script>

JSON平铺功能的实现(JS操作JSON数据)的更多相关文章
- JavaScript(js)对象常用操作,JS操作JSON总结
数据类型判断可以通过一元操作符typeof,此操作符可以判断大部分JS数据类型. 也可以通过instanceof来判断.如: var a = []; alert(typeof a); // objec ...
- JS操作JSON总结
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意 ...
- (转)JSON数据格式和js操作json总结
原:http://niutuku.com/tech/javaScript/273643.shtml JSON数据格式和js操作json总结 来源:niutuku.com | vince ...
- JS 操作JSON字符串
用Js的eval解析JSON中的注意点 在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 使用eva ...
- JS操作JSON总结(转)
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意 ...
- JS操作JSON的方法总结
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意 ...
- JavaScript中使用JSON,即JS操作JSON总结
JSON(JavaScript Object Notation 对象标记) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生 ...
- JSON基础 JS操作JSON总结
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意 ...
- [UWP]使用Win2D的BorderEffect实现图片的平铺功能
1. WPF有,而UWP没有的图片平铺功能 在WPF中只要将ImageSource的TileMode属性设置为Tile即可实现图片的平铺,具体可见WPF的这些文档: ImageBrush 类 (Sys ...
随机推荐
- Installing Android Studio
To set up Android Studio on Windows: Launch the .exe file you just downloaded. Follow the setup wiza ...
- (2018干货系列四)最新Python学习路线整合
怎么学Python Python是一种面向对象的解释型计算机程序设计语言,纯粹的自由软件,常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起. Python初级开 ...
- 计算概论(A)/基础编程练习2(8题)/8:1的个数
#include<stdio.h> int main() { ; // 存储测试数据的二进制形式中1的个数 int bian[N]; // 输入十进制整数N 表示N行测试数据 scanf( ...
- Dubbox分布式框架之入门
Dubbox简介 Dubbox是一个分布式服务框架,其前身是阿里巴巴开源项目Dubbox,被国内电商及换联网项目中使用,后期阿里巴巴停止了该项目的维护,当当网便在Dubbo基础上进行优化,并继续维护, ...
- Pytorch-学习记录 卷积操作 cnn output_channel, etc.
参考资料: pytorch中文文档 http://pytorch-cn.readthedocs.io/zh/latest/
- go开发工具及安装使用(Liteide)Liteide-centos6.8 安装
开发工具介绍 LiteIDE https://github.com/visualfc/liteide/blob/master/liteidex/deploy/welcome/zh_CN/readme. ...
- oracle /*+ SYS_DL_CURSOR */ 这个hint
之前一直都没使用过 /*+ SYS_DL_CURSOR */这个提示,今天下午在排查一个性能问题的时候,发现出问题的session在执行一个带了SYS_DL_CURSOR提示的语句,类似于: 经查这个 ...
- VIM自动补全Python代码
pydiction插件 https://codeload.github.com/rkulla/pydiction/zip/master 新建bundle文件夹 mkdir ~/.vim/bundle ...
- jq svg 修改image的xmlns:xlink及图片的显隐
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- kaggle竞赛_mnist_10%
主要是通过mnist了解kaggle的操作细节,最终这里的结果为: 引入必须的库¶ import pandas as pd import numpy as np import matplotlib ...