【御控物联】JavaScript JSON结构转换(16):对象To数组——综合应用

news2024/10/6 1:45:26

文章目录

  • 一、JSON结构转换是什么?
  • 二、术语解释
  • 三、案例之《JSON对象 To JSON数组》
  • 四、代码实现
  • 五、在线转换工具
  • 六、技术资料


一、JSON结构转换是什么?

JSON结构转换指的是将一个JSON对象或JSON数组按照一定规则进行重组、筛选、映射或转换,生成新的JSON对象或数组的过程。这种转换可以包括改变JSON数据的结构、提取特定字段、合并多个JSON数据,或者对数据进行计算和处理等操作。

在JSON结构转换中,常见的操作包括:

  • 提取字段:从一个JSON对象中提取特定字段,生成新的JSON对象。
  • 过滤数据:根据条件过滤JSON数据,生成符合条件的新JSON对象或数组。
  • 映射转换:将一个JSON对象中的字段映射到另一个字段,生成新的JSON对象。
  • 合并数据:将多个JSON对象或数组合并成一个新的JSON对象或数组。

JSON结构转换通常在数据处理、数据清洗、数据分析等场景中广泛应用。通过结构转换,可以根据需求定制化地处理JSON数据,使其符合特定的业务逻辑或数据格式要求。
为此我们提供了一个简单开源的JS类库,接下来我们对此类库进行详细讲解。

二、术语解释

1.转换操作【高级配置选项】

转换操作包含三种

  • 复制源子元素(原Key)(默认)
    将源的子元素复制到目标元素中,并保留源子元素的Key

  • 复制源子元素(新Key)
    将源的子元素复制到目标元素中,并为目标元素的新生成的子元素重新生成Key

  • 复制目标子元素
    依据源的子元素的个数,复制与源子元素同等数量的目标元素的首子元素到目标元素,并为目标元素的新生成的子元素重新生成Key

三、案例之《JSON对象 To JSON数组》

源JSON结构:

{
  "a": {
        "c_child": "2",    
        "d_child": "3",     
        "e_child": "4"
      }    
}

目标JSON结构:

{
  "b1": [
    [
      {
        "k1_child": "v1_child"
      }
    ]
  ]
}

转换需求:

以下需求分别执行

  1. 在目标b1中依据源生成同等数量的子元素
  2. root.b1[*][*].k1_child的键用root.a.*键替换
  3. root.b1[*][*].k1_child的值用root.a.*值替换

期望效果:

{
  "b1": [
    [
      {
        "c_child": "2"
      }
    ],
    [
      {
        "d_child": "3"
      }
    ],
    [
      {
        "e_child": "4"
      }
    ]
  ]
}

四、代码实现


import JsonTranferUtil from './json_transfer'

/************************数组转对象   示例数据 ********************** */


/// 转换类型
/// 1:源Key->目标Key
/// 2:源Key->目标Value
/// 3:源Value->目标Key
/// 4:源Value->目标Value
const mappings = [
  {
    "OrgJsonPath": "root.a",
    "AimJsonPath": "root.b1",
    "TranType": 4,
    "Options": {
      "KeyInitIndex": 0,
      "AddElementsOption": "2",
      "TranOP": "3",
      "TranWay": "1"
    }
  },
  {
    "OrgJsonPath": "root.a.*",
    "AimJsonPath": "root.b1[*][*].k1_child",
    "TranType": 1,
    "Options": {
      "KeyInitIndex": 0,
      "AddElementsOption": "1",
      "TranOP": "3",
      "TranWay": "2"
    }
  },
  {
    "OrgJsonPath": "root.a.*",
    "AimJsonPath": "root.b1[*][*].k1_child",
    "TranType": 4,
    "Options": {
      "KeyInitIndex": 0,
      "AddElementsOption": "1",
      "TranOP": "3",
      "TranWay": "2"
    }
  }
];
const jsonOrg = {
    "a": {
          "c_child": "2",    
          "d_child": "3",     
          "e_child": "4"
        }    
  };
const jsonAim = {
    "b1": [
      [
        {
          "k1_child": "v1_child"
        }
      ]
    ]
  };

/*******************数组转对象    测试程序***************** */

let jsonTranferUtil = new JsonTranferUtil(jsonOrg, jsonAim, mappings);
let result = jsonTranferUtil.tranJson();
console.log("*************************最终转换结果*********************************")
console.log(JSON.stringify(result), 9999999999999)

执行结果如下:
在这里插入图片描述

五、在线转换工具

为了让使用者更加方便的配置出映射关系,为此开发了一套在线转换工具,可在工具中通过拖拽即可配置想要的结构转换关系,并可对转换关系所能实现的效果实时进行预览更改。

工具地址:数据转换工具
在这里插入图片描述

六、技术资料

  • Github:edq-ebara/data-transformation-javascript: 数据转化(javascript) (github.com)
  • 技术探讨QQ群:775932762
  • 工具连接:数据转换工具
  • 御控官网:https://www.yu-con.com/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1573736.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【JavaSE零基础】00-基础语法(1-12章)

1 第一章 Java开发环境搭建 1.1 章节目标与知识框架 1.1.1 章节目标 掌握Java的开发环境搭建,会编写HelloWorld程序,并能够准确的进行编译和运行;理解path和classpath环境变量并可以自行配置。 1.1.2 知识框架 1.2 Java语言概述(了解) J…

20240404这个数字有什么特点吗?

今天是2024年的清明节,20240404这个数字让我提出了一个疑问,它是否有什么含义或者特点呢? 首先,如果把它拆分为两个整数的平方和,会怎么样呢? 于是,我一顿操作猛如虎,搞出了这么个…

如何在Python中将HTML实体代码转换为文本

在处理HTML数据时&#xff0c;有时会遇到HTML实体代码&#xff0c;这些代码是为了在HTML中表示特殊字符而使用的。例如&#xff0c;<表示小于符号(<)&#xff0c;>表示大于符号(>)&#xff0c;&表示和符号(&)等等。那么当我们在实际操作中可能会遇到下面的…

并发编程BlockingQueue、BlockingDeque

系列文章目录 文章目录 系列文章目录前言前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 BlockingQueue 也叫做阻塞队列,在某些情况下对BlockingQueue的访问可能会…

Kubernetes学习笔记7

使用kubeadm部署Kubernetes集群方法 使用kubernetes部署单节点Master节点K8s集群。 在实际生产环境中&#xff0c;是不允许单master节点的&#xff0c;如果单master节点不可用的话&#xff0c;当导致我们的K8s集群无法访问。 可以使用kubeadm将单master节点升级为多master节点…

【计算机毕业设计】企业员工信息管理系统——附系统源码

&#x1f389;**欢迎来到琛哥的技术世界&#xff01;**&#x1f389; &#x1f4d8; 博主小档案&#xff1a; 琛哥&#xff0c;一名来自世界500强的资深程序猿&#xff0c;毕业于国内知名985高校。 &#x1f527; 技术专长&#xff1a; 琛哥在深度学习任务中展现出卓越的能力&a…

[AIGC] Spring Interceptor 拦截器详解

文章目录 什么是Spring Interceptor如何使用Spring InterceptorSpring Interceptor的影响 什么是Spring Interceptor Interceptor&#xff08;拦截器&#xff09;是Spring MVC框架中的一种特性&#xff0c;类似于Servlet开发中的Filter&#xff08;过滤器&#xff09;&#xf…

007 CSS的继承和层叠 元素特性

文章目录 CSS属性的继承CSS属性的层叠选择器的权重 HTML元素的类型编写HTML注意事项元素隐藏方法CSS属性-overflowCSS样式不生效可能原因 CSS属性的继承 如果一个属性具备继承性&#xff0c;那么在该元素上设置后&#xff0c;它的后代元素都可以继承这个属性 如果后代元素自己…

UE4_如果快速做出毛玻璃效果_假景深

UE4_如果快速做出毛玻璃效果_假景深 2022-08-20 15:02 一个SpiralBlur-SceneTexture材质节点完成效果&#xff0c;启用半透明材质通过修改BlurAmount数值大小调整效果spiralBlur-SceneTexture custom节点&#xff0c;HLSL语言float3 CurColor 0;float2 BaseUV MaterialFloa…

浅谈智能照明控制系统的节能优势及其应用

【摘要】&#xff1a;通过智能照明控制系统与传统照明控制的对比&#xff0c;阐明智能照明控制系统的优势&#xff0c;基本组成、在智能建筑中的应用效果以及其实施存在的问题和前景展望。 【关键字】&#xff1a;智能照明控制&#xff1b;系统组成&#xff1b;优势&#xff1…

关于代码审查的一些思考

作为一名代码审查员&#xff0c;首先我们已经具备了丰富的代码开发经验&#xff0c;并且对提交的代码工程非常熟悉 代码审查可以发现并纠正代码中的错误、缺陷和不良实践。通过多人对代码进行仔细的检查和讨论&#xff0c;能够发现一些单独开发时难以察觉的问题&#xff0c;从…

力扣22. 括号生成

Problem: 22. 括号生成 文章目录 题目描述思路复杂度Code 题目描述 思路 1.定义回溯函数&#xff1a;void backtrack(int n, int leftUsed, int rightUsed, int k, string& path)&#xff1b;(每个参数的具体说明见下面代码) 1.1.结束条件&#xff1a;当k 2 * n时将path添…

SQLyog连接数据库8.0版本解析错误问题解决方案

问题描述&#xff1a; 解决方案&#xff1a; alter userrootlocalhostidentified with mysql_native_password by 密码; 再次连接就可以了。

zdpdjango_argonadmin Django后台管理系统中的常见功能开发

效果预览 首先&#xff0c;看一下这个项目最开始的样子&#xff1a; 左侧优化 将左侧优化为下面的样子&#xff1a; 代码位置&#xff1a; 代码如下&#xff1a; {% load i18n static admin_argon %}<aside class"sidenav bg-white navbar navbar-vertical na…

华为OD机试 - 全排列 - 回溯(Java 2024 C卷 100分)

华为OD机试 2024C卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷C卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;每一题都有详细的答题思路、详细的代码注释、样例测试…

【Python时序预测系列】基于ACO+LSTM实现单变量时间序列预测(源码)

这是我的第253篇原创文章。 一、引言 蚁群优化&#xff08;Ant Colony Optimization&#xff0c;ACO&#xff09;是一种启发式算法&#xff0c;受到蚂蚁寻找食物的行为启发而来。它可以用于优化问题&#xff0c;包括调整神经网络的超参数。长短期记忆网络&#xff08;LSTM&…

wheeltec轮趣ROS教育机器人的网络连接

一、术语解析 宿主机&#xff1a;宿主机是指物理主机&#xff0c;比如用于开发测试的笔记本电脑和台式机电脑。 虚拟机&#xff1a;虚拟机是指安装在宿主机的VMware&#xff0c;推荐在宿主机上安装虚拟机&#xff0c;官方提供虚拟机的镜像以及配套的开发环境。 ROS主机&…

HTML:表单

案例&#xff1a; <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title>报名表</title> </head> <body><form action"demo/welcome.php" method"post">名字&#xff1a;<inpu…

【Linux】进程初步理解

个人主页 &#xff1a; zxctscl 如有转载请先通知 文章目录 1. 冯诺依曼体系结构1.1 认识冯诺依曼体系结构1.2 存储金字塔 2. 操作系统2.1 概念2.2 结构2.3 操作系统的管理 3. 进程3.1 进程描述3.2 Linux下的PCB 4. task_struct本身内部属性4.1 启动4.2 进程的创建方式4.2.1 父…