一、什么是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格式。网上没找到合适的答案,就自己动手实现了一个。

二、第二种实现方法

先列出几个要注意的点:

  1. 对于含有子节点的key值,并不作为提取对象。

例如: a.a1, a并不需要

  1. 采用递归的方式解决数据未知层数
  2. 因为递归时需要不断提取父节点,所以初始化的时候会加入多余的头部。

例如: 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数据)的更多相关文章

  1. JavaScript(js)对象常用操作,JS操作JSON总结

    数据类型判断可以通过一元操作符typeof,此操作符可以判断大部分JS数据类型. 也可以通过instanceof来判断.如: var a = []; alert(typeof a); // objec ...

  2. JS操作JSON总结

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意 ...

  3. (转)JSON数据格式和js操作json总结

    原:http://niutuku.com/tech/javaScript/273643.shtml JSON数据格式和js操作json总结 来源:niutuku.com |         vince ...

  4. JS 操作JSON字符串

    用Js的eval解析JSON中的注意点 在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 使用eva ...

  5. JS操作JSON总结(转)

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意 ...

  6. JS操作JSON的方法总结

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意 ...

  7. JavaScript中使用JSON,即JS操作JSON总结

    JSON(JavaScript Object Notation 对象标记) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生 ...

  8. JSON基础 JS操作JSON总结

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意 ...

  9. [UWP]使用Win2D的BorderEffect实现图片的平铺功能

    1. WPF有,而UWP没有的图片平铺功能 在WPF中只要将ImageSource的TileMode属性设置为Tile即可实现图片的平铺,具体可见WPF的这些文档: ImageBrush 类 (Sys ...

随机推荐

  1. oracle函数,游标,视图使用总结

    oracle函数或者叫存储过程,在实际的开发过程中对于复杂的业务需求是非常有用的,非常有效率的也是非常好玩儿的一个技术点. 平常在开发过程中对于CRUD功能较多.一般SQL即可应付,大不了就是长一点而 ...

  2. Lonsdor K518ISE free update news on what makes and year can work

    Lonsdor K518ISE engineers recently tested a number of cars and verified working great, below are tes ...

  3. ogg 12.3 for sqlserver 2016 CDC模式配置

    本文主要讲述ogg 12.3 通过CDC抽取sqlserver 2016 enterprise的过程,投递配置相对简单,所以不在此阐述. 配置步骤概述 1. 解压ogg 12.3 for sqlser ...

  4. hashcat使用命令简介

    1.指定HASH类型 在HashCat中--hash-type ?参数可以指定要破解的HASH类型,运行hashcat主程序加上--help参数,在* Generic hash types:中可以看到 ...

  5. Eclipse导入MyEclipse创建的WEB项目无法识别的解决方案

    Eclipse导入MyEclipse创建的WEB项目无法识别的解决方案

  6. DOS下读取smbios的汇编程序(通过搜索memory)

    汇编程序编写的读取smbios的代码: ;------------------------------------------------- ;功能: 读取SMBIOS 的Entry Point ,并 ...

  7. pyqt5 界面切换

    QStackedWidget 只需要关联好对应的信号和槽,调用setCurrentIndex函数,想切哪个界面就切到哪个界面

  8. pyqt5 树节点点击实现多窗口切换

    # coding=utf-8 import sys from PyQt5.QtWidgets import * from PyQt5.QtCore import * from PyQt5.QtGui ...

  9. 通过RMAN 识别失败数据库损坏的对象

    背景 业务起不来,读取数据库时报坏块,无法读取数据 数据库版本:11.2.0.3 数据库无备份,无归档 1. 识别坏块 执行以下命令后,rman 会把坏块信息统计到 v$database_block_ ...

  10. Cannot resolve reference to bean 'sqlSessionFactory' while setting bean

    今天下载公司以前的一个项目,要和现在的项目进行整合,下载一切顺利,但在开发机器上一跑,憋了. 有两种日志,两种报错:一个是cannot resolve reference to bean 'sqlSe ...