CN116522871B - 数据格式转换方法、装置、设备和存储介质 - Google Patents

数据格式转换方法、装置、设备和存储介质 Download PDF

Info

Publication number
CN116522871B
CN116522871B CN202310813356.6A CN202310813356A CN116522871B CN 116522871 B CN116522871 B CN 116522871B CN 202310813356 A CN202310813356 A CN 202310813356A CN 116522871 B CN116522871 B CN 116522871B
Authority
CN
China
Prior art keywords
data
attribute
attribute identifier
target
identifier
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202310813356.6A
Other languages
English (en)
Other versions
CN116522871A (zh
Inventor
张绪强
王耀威
陈宇
兰艳
蒋冬梅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Peng Cheng Laboratory
Original Assignee
Peng Cheng Laboratory
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Peng Cheng Laboratory filed Critical Peng Cheng Laboratory
Priority to CN202310813356.6A priority Critical patent/CN116522871B/zh
Publication of CN116522871A publication Critical patent/CN116522871A/zh
Application granted granted Critical
Publication of CN116522871B publication Critical patent/CN116522871B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/151Transformation
    • G06F40/154Tree transformation for tree-structured or markup documents, e.g. XSLT, XSL-FO or stylesheets

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例提供数据格式转换方法、装置、设备和存储介质,涉及计算机技术领域。获取初始JSON格式数据,在第一显示区域显示初始JSON格式数据的树结构和第一属性标识,在第二显示区域显示目标属性标识;在第一显示区域中对第一属性标识进行选择得到第二属性标识,将第二属性标识和目标属性标识关联得到连接关系,并在第三显示区域显示该连接关系,最后根据连接关系对应的映射关系从树结构对应的无层级属性信息中选择第二属性标识的值数据,并基于映射关系将目标属性标识和值数据进行对应,得到目标JSON格式数据。整个过程无需用户进行底层设计,可视化界面使得用户容易理解转换过程,降低学习成本,进而提高数据转换效率。

Description

数据格式转换方法、装置、设备和存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及数据格式转换方法、装置、设备和存储介质。
背景技术
JSON是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据,具有简洁和清晰的层次结构,易于人阅读和编写,同时也易于机器解析和生成,能够有效提升网络传输效率,是一种常用的数据交换语言。在多个应用程序之间多是采用JSON格式进行数据交换,然而不同的应用程序或物联设备所提供的交互JSON数据,大多是按照各自的业务定义格式,而格式不尽相同,因此不同应用程序之间的数据交互较为困难。
相关技术中根据不同JSON格式开发不同的实体类或者通过增加修改注解属性等解析方法来实现数据转换。但是这些格式转化的过程属于底层实现过程,需要具备相应的开发知识才能完成数据交互,学习门槛较高。
发明内容
本申请实施例的主要目的在于提出数据格式转换方法、装置、设备和存储介质,提供一种能够直观操作的JSON数据格式转换方法。
为实现上述目的,本申请实施例的第一方面提出了一种数据格式转换方法,包括:
获取初始JSON格式数据,所述初始JSON格式数据包括:第一属性标识;
在第一显示区域显示所述初始JSON格式数据的树结构,以及在第二显示区域显示目标属性标识;所述树结构为根据所述第一属性标识在所述初始JSON格式数据中的JSON层级信息构建的;所述目标属性标识根据标识模板或所述第一属性标识得到;
响应于目标操作指令,在第三显示区域显示第二属性标识与所述目标属性标识的连接关系;所述目标操作指令用于在所述树结构中选取所述第一属性标识作为所述第二属性标识以及建立所述连接关系;
根据所述连接关系对应的映射关系从所述树结构对应的无层级属性信息中选择所述第二属性标识的值数据,并基于所述映射关系将所述值数据作为所述目标属性标识的目标值数据,根据所述目标属性标识和所述目标值数据得到目标JSON格式数据;所述无层级属性信息为利用所述JSON层级信息对所述第一属性标识进行无层级格式转换生成的。
在一些实施例,利用所述JSON层级信息对所述第一属性标识进行无层级格式转换生成所述无层级属性信息的步骤,包括:
将所述初始JSON格式数据作为第一迭代数据,基于所述第一迭代数据的JSON层级信息对所述第一迭代数据执行第一判断流程,得到集合对象数据;
将所述集合对象数据作为第二迭代数据,对所述第二迭代数据执行第二判断流程,得到所述无层级属性信息。
在一些实施例,所述JSON层级信息包括所述第一属性标识的集合层级信息;所述第一判断流程包括:
若所述第一迭代数据存在所述集合层级信息,则执行第一转换流程,根据所述集合层级信息和所述第一迭代数据得到集合继承数据;
根据所述集合继承数据更新所述第一迭代数据,重复执行所述第一转换流程,直至所述集合继承数据中不包含所述集合层级信息;
根据所述集合继承数据得到所述集合对象数据。
在一些实施例,所述JSON层级信息包括所述第一属性标识的父子层级信息;所述第二判断流程包括:
若所述第二迭代数据存在所述父子层级信息,则执行第二转换流程,根据所述父子层级信息和所述第二迭代数据得到层级继承数据;
将所述层级继承数据作为所述第二迭代数据,重复执行所述第二转换流程,直至所述层级继承数据中不包含所述父子层级信息;
根据所述层级继承数据得到所述无层级属性信息。
在一些实施例,所述集合层级信息包括:集合内层和集合外层,所述集合内层是所述集合外层的下一层级;所述第一转换流程包括:
获取所述第一迭代数据中位于所述集合外层的所述第一属性标识作为外层属性标识;
将位于所述外层属性标识的集合内层的所述第一属性标识作为内层属性标识;
根据具有所述集合内层的所述外层属性标识、所述内层属性标识和第一预设格式生成集合属性标识;
根据所述集合属性标识、所述外层属性标识和所述第一迭代数据得到所述集合继承数据。
在一些实施例,所述父子层级信息包括:父层级和子层级,所述子层级是所述父层级的下一层级;所述第二转换流程包括:
获取所述第二迭代数据中位于所述父层级的所述集合属性标识作为父层属性标识;
根据位于所述父层属性标识的子层级的所述第一属性标识得到子层属性标识;
根据所述父层属性标识、所述子层属性标识和第二预设格式生成层级属性标识;
根据所述层级属性标识和所述第二迭代数据得到所述层级继承数据。
在一些实施例,所述方法包括:
当所述目标属性标识根据标识模板得到时,则响应于模板选择指令,选择所述标识模板,并将所述标识模板中的属性标识作为所述目标属性标识显示在所述第二显示区域;
当所述目标属性标识根据所述第一属性标识得到时,则响应于标识选择指令,在所述第一显示区域选择至少一个所述第一属性标识作为所述目标属性标识显示在所述第二显示区域,选取的所述第一属性标识不包含所述子层级。
在一些实施例,所述JSON层级信息包括:集合层级信息和父子层级信息;根据所述第一属性标识在所述初始JSON格式数据中的JSON层级信息构建包含所述第一属性标识的树结构的步骤包括:
根据所述第一属性标识、所述集合层级信息和所述父子层级信息生成所述树结构的层级和所述树结构的节点标识;
基于所述层级和所述节点标识生成所述树结构。
在一些实施例,所述响应于目标操作指令,在第三显示区域显示第二属性标识与所述目标属性标识的连接关系,包括:
响应于目标操作指令生成所述第二属性标识和所述目标属性标识的连接关系;
在所述第三显示区域显示一个或一个以上所述连接关系。
在一些实施例,所述根据所述连接关系对应的映射关系从所述树结构对应的无层级属性信息中选择所述第二属性标识的值数据,并基于所述映射关系将所述值数据作为所述目标属性标识的目标值数据,根据所述目标属性标识和所述目标值数据得到目标JSON格式数据,包括:
获取所述第二属性标识在所述无层级属性信息中对应的层级属性标识,并根据所述层级属性标识和所述连接关系得到所述映射关系;
获取所述层级属性标识对应的值数据,并基于所述值数据和所述层级属性标识构成映射解析数据;
基于所述映射关系和所述映射解析数据生成所述目标属性标识的键值对,并基于所述键值对生成所述目标JSON格式数据。
在一些实施例,所述基于所述映射关系和所述映射解析数据生成所述目标属性标识的键值对,包括:
根据所述目标属性标识和所述映射关系从所述映射解析数据中选择所述值数据;
获取所述目标属性标识的目标数据格式或目标数值类型;
根据所述目标数据格式对所述值数据进行格式转换得到所述目标值数据;或,根据所述目标数值类型对所述值数据进行类型转换得到所述目标值数据;
将所述目标属性标识作为所述键值对的键,将所述目标值数据作为所述键值对的值。
在一些实施例,所述目标操作指令是连线指令,所述第三显示区域位于所述第一显示区域和所述第二显示区域之间;所述生成所述第二属性标识和所述目标属性标识的连接关系,包括:
在所述第一显示区域显示所述第二属性标识的第一连接点;
在所述第二显示区域显示所述目标属性标识的第二连接点;所述第一连接点和对应的所述第二连接点在所述第三显示区域形成连接线;所述连接线表征所述连接关系。
在一些实施例,所述目标操作指令是拖拽指令,所述第三显示区域包括操作区,所述操作区包括:第一操作区和与所述第一操作区关联的第二操作区;所述生成所述第二属性标识和所述目标属性标识的连接关系,包括:
将所述第二属性标识对应的所述目标属性标识拖拽到所述操作区的所述第二操作区;
将所述第一显示区域中所述第二属性标识拖拽到对应于所述第二操作区的所述第一操作区;所述第一操作区和所述第二操作区之间的关联信息表征所述第二属性标识和所述目标属性标识的连接关系。
在一些实施例,所述在第二显示区域显示目标属性标识之后,还包括:
对生成的所述目标属性标识进行修正,得到修正属性数据;
在所述第二显示区域显示所述修正属性数据。
在一些实施例,所述方法还包括:
将所述映射关系和所述映射关系的关系名称保存在映射关系历史数据中;
响应于映射关系选择操作,在显示的所述映射关系历史数据中根据所述关系名称选择对应的所述映射关系,并将所述映射关系显示在所述第三显示区域中。
为实现上述目的,本申请实施例的第二方面提出了一种数据格式转换装置,包括:
获取模块:用于获取初始JSON格式数据,所述初始JSON格式数据包括:第一属性标识;
属性显示模块:用于在第一显示区域显示所述初始JSON格式数据的树结构,以及在第二显示区域显示目标属性标识;所述树结构为根据所述第一属性标识在所述初始JSON格式数据中的JSON层级信息构建的;所述目标属性标识根据标识模板或所述第一属性标识得到;
映射显示模块:用于响应于目标操作指令,在第三显示区域显示第二属性标识与所述目标属性标识的连接关系;所述目标操作指令用于在所述树结构中选取所述第一属性标识作为所述第二属性标识以及建立所述连接关系;
数据生成模块:用于根据所述连接关系对应的映射关系从所述树结构对应的无层级属性信息中选择所述第二属性标识的值数据,并基于所述映射关系将所述值数据作为所述目标属性标识的目标值数据,根据所述目标属性标识和所述目标值数据得到目标JSON格式数据;所述无层级属性信息为利用所述JSON层级信息对所述第一属性标识进行无层级格式转换生成的。
为实现上述目的,本申请实施例的第三方面提出了一种电子设备,所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的方法。
为实现上述目的,本申请实施例的第四方面提出了一种存储介质,所述存储介质为计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的方法。
本申请实施例提出的数据格式转换方法、装置、设备和存储介质,该方法获取初始JSON格式数据,然后在第一显示区域显示初始JSON格式数据的树结构和第一属性标识,在第二显示区域显示目标属性标识;再利用目标操作指令在第一显示区域中对第一属性标识进行选择操作得到第二属性标识,同时将第二属性标识和第二显示区域的目标属性标识关联起来得到连接关系,并在第三显示区域自动显示该连接关系,最后根据连接关系对应的映射关系从树结构对应的无层级属性信息中选择值数据,并基于映射关系将目标属性标识和值数据进行对应,得到目标JSON格式数据。整个过程无需用户进行底层设计,可视化界面使得用户容易理解转换过程,降低学习成本,进而提高数据转换效率。
附图说明
图1是本发明实施例提供的数据格式转换方法的流程图。
图2是本发明又一实施例提供的数据格式转换方法的流程图。
图3是本发明又一实施例提供的数据格式转换方法中初始JSON格式数据的示意图。
图4是本发明又一实施例提供的数据格式转换方法中可视化编辑界面的示意图。
图5是本发明又一实施例提供的数据格式转换方法的流程图。
图6是本发明又一实施例提供的数据格式转换方法的第一转换流程的流程图。
图7是图6中的步骤S610的流程图。
图8是本发明又一实施例提供的数据格式转换方法的第二转换流程的流程图。
图9是图8中的步骤S810的流程图。
图10是本发明又一实施例提供的数据格式转换方法的“选择模板”的标志示意图。
图11是图1中的步骤S130的流程图。
图12是本发明又一实施例提供的数据格式转换方法中可视化编辑界面的示意图。
图13a是本发明又一实施例提供的数据格式转换方法中可视化编辑界面的示意图。
图13b是本发明又一实施例提供的数据格式转换方法中可视化编辑界面的示意图。
图14是图1中的步骤S140的流程图。
图15是图14中的步骤S1430的流程图。
图16是本发明又一实施例提供的数据格式转换方法的流程图。
图17是本发明又一实施例提供的数据格式转换方法的示意图。
图18是本发明又一实施例提供的数据格式转换装置结构框图。
图19是本发明实施例提供的电子设备的硬件结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
需要说明的是,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。
首先,对本发明中涉及的若干名词进行解析:
JSON(JavaScript Object Notation):是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据,具有简洁和清晰的层次结构,易于人阅读和编写,同时也易于机器解析和生成,能够有效提升网络传输效率,是一种常用的数据交换语言。
在多个应用程序之间多是采用JSON格式进行数据交换,然而不同的应用程序或物联设备所提供的交互用JSON数据,大多是按照各自的业务定义格式,而格式不尽相同,因为具有不同的定义标准,导致同一数据的同一属性在不同的业务中使用不同字段,或者同一属性在JSON中的层级与位置不同等问题,因此不同应用程序之间的数据交互较为困难。当需要进行数据对接、数据共享、数据交换等业务场景时,各个应用程序需要重新开发适配,将不同的数据格式按照各自所需的标准要求重新解析转换,费时费力。
相关技术中根据不用JSON格式开发不同的实体类或者通过增加修改注解属性等解析方法来实现数据转换。一方面通用性低,需要根据不同的JSON数据开发不同的转换程序,导致开发成本高,开发效率低;另一方面这些格式转化的过程属于底层实现过程,需要具备相应的开发知识才能完成数据交互,学习门槛较高。
基于此,本发明实施例提供一种数据格式转换方法、装置、设备和存储介质,生成的树结构中包含初始JSON格式数据中的JSON层级信息,目标属性标识是根据标识模板或者第一属性标识得到,因此利用目标操作指令在可视化编辑界面中,通过对树结构中第一属性标识进行选择得到第二属性标识,将第二属性标识和目标属性标识关联起来,得到连接关系,然后根据连接关系自动生成目标JSON格式数据,能够将不同格式的JSON数据进行格式转换,转换结果易于系统理解,能够实现不同应用程序之间的数据交互,避免对接不同厂商时的重复开发工作;同时整个过程无需用户进行底层设计,可视化界面使得用户容易理解转换过程,降低学习成本,进而提高数据转换效率。
本发明实施例提供数据格式转换方法、装置、设备和存储介质,具体通过如下实施例进行说明,首先描述本发明实施例中的数据格式转换方法。
本发明实施例提供的数据格式转换方法,涉及计算机技术领域,尤其涉及数据挖掘技术领域。本发明实施例提供的数据格式转换方法可应用于终端中,也可以是运行于终端中的计算机程序。举例来说,计算机程序可以是操作系统中的原生程序或软件模块;可以是本地(Native)应用程序(APP,Application),即需要在操作系统中安装才能运行的程序,如支持数据格式可视化转换的客户端,也可以是小程序,即只需要下载到浏览器环境中就可以运行的程序;还可以是能够嵌入至任意APP中的小程序。总而言之,上述计算机程序可以是任意形式的应用程序、模块或插件。该数据格式转换方法可以由终端执行,或由终端和服务器协同执行,其中,终端通过网络与服务器进行通信。例如终端提供可视化编辑界面,数据转换的过程在服务器中运行,服务器将运行结果发送给终端进行显示。
在一些实施例中,终端可以是智能手机、平板电脑、笔记本电脑、台式计算机或者智能手表等。服务器可以是独立的服务器,也可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(ContentDelivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器;也可以是区块链系统中的服务节点,该区块链系统中的各服务节点之间组成点对点(P2P,PeerTo Peer)网络,P2P协议是一个运行在传输控制协议(TCP,Transmission ControlProtocol)协议之上的应用层协议。终端与服务器之间可以通过蓝牙、USB(UniversalSerial Bus,通用串行总线)或者网络等通讯连接方式进行连接,本实施例在此不做限制。
本发明可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
下面描述本发明实施例中的数据格式转换方法。
图1是本发明实施例提供的数据格式转换方法的一个可选的流程图,图1中的方法可以包括但不限于包括步骤S110至步骤S140。同时可以理解的是,本实施例对图1中步骤S110至步骤S140的顺序不做具体限定,可以根据实际需求调整步骤顺序或者减少、增加某些步骤。
步骤S110:获取初始JSON格式数据。
在一实施例中,开发可视化编辑界面用于实现数据格式转换方法,可视化编辑界面运行在终端设备上,用户上传不同业务或者不同应用程序生成的初始JSON格式数据,这些初始JSON格式数据中可能同一属性字段使用不同的字段名称,或者同一属性字段可能位于不同的层级和位置。用户需要获取对应的字段名称和字段的参数值,将其进行自定义的名称设定和选取。例如可视化编辑界面是一种物联网接入平台,业务数据以JSON格式上传到平台中,用户需要从不同的业务数据中提取相关属性的字段,即可使用本申请实施例的数据格式转换方法,从上传的不同JSON数据中提取需要的属性字段,无需针对每个上传数据进行逐一分析。在一实施例中,初始JSON格式数据以文件形式上传到开发可视化编辑界面,用户可以在终端设备上以直观的方式进行操作,从而将不同格式的初始JSON格式数据转换成统一的数据格式。
在一实施例中,初始JSON格式数据中包括:第一属性标识,这里的第一属性标识可以是对象标识或数组标识。其中,初始JSON格式数据中对象标识为JSON对象的名称,其中JSON对象在大括号{...}中书写,其中,JSON对象可以包含多个键值对,键key必须是字符串,值value可以是合法的JSON数据类型,例如字符串、数字、对象、数组、布尔值或null,键key和值value之间使用冒号“:”分割,不同的键值对之间使用“,”进行分割。而初始JSON格式数据中数组标识为JSON数组的名称,JSON数组在方括号[...]中书写,JSON数组可以包含JSON对象或者其他的JSON数组。
例如,一实施例中,JSON对象为:
myObj={"name":"runoob","alexa":10000","site":null};
其中,myObj是对象标识,"name":"runoob"是一个键值对,键key为name,值value为runoob,值value的类型为字符串,"alexa":10000"的键值对中键key为alexa,值value为10000,值value的类型为数字;"site":null的键值对中键key为site,值value为null,值value的类型为null。
例如,一实施例中JSON数组为:
"sites":[
{"name":"www1","info":["中文","翻译网站"]},
{"name":"www2","info":["办公工具网站"]},
{"name":"www3","info":["购物网站"]}]
其中,sites为数组标识,该JSON数组中包含多个JSON对象。
获取到初始JSON格式数据后,执行下述步骤进行格式转化。
步骤S120:在第一显示区域显示初始JSON格式数据的树结构,以及在第二显示区域显示目标属性标识。
在一实施例中,树结构为根据第一属性标识在初始JSON格式数据中的JSON层级信息构建的树结构。其中,JSON层级信息包括集合层级信息和父子层级信息。
具体的,集合层级信息包括:集合内层和集合外层,其中,集合内层是集合外层的下一层级,即集合内层和集合外层是嵌套关系,集合内层嵌套在集合外层内,集合层级信息用于表征这种嵌套关系。该实施例中,在集合层级信息中还包括父子层级信息,用于表征集合内层的属性继承关系,父子层级信息包括:父层级和子层级,其中,子层级是父层级的下一层级;子层级继承父层级的属性信息。
在一实施例中,参照图2,是一实施例示出的根据第一属性标识在初始JSON格式数据中的JSON层级信息构建包含第一属性标识的树结构的步骤,包括:
步骤S210:根据第一属性标识、集合层级信息和父子层级信息生成树结构的层级和树结构的节点标识。
步骤S220:基于层级述节点标识生成树结构。
在一实施例中,参照图3,在一具体应用场景中,两个机器人传感器用于采集环境信息,两个机器人(参照图3,两者的id分别是445和446)上传的数据保存在一个JSON格式文件中,然后上传到物联网接入平台的界面中进行数据格式转换。其中,初始JSON格式数据中包含两个传感器的数据,每个传感器的数据作为一个集合内层,嵌套在一个集合外层中,一个集合外层和对应的集合内层构成一个集合。
参照图3,初始JSON格式数据中包含1个集合,该集合包含两个集合内层,分别是:集合内层1和集合内层2,该实施例中,集合内层1和集合内层2的数据格式相同,只有数据值不同,但是可以理解的是,实际使用过程中集合的数量、一个集合中集合内层的数量以及每个集合内层的数据格式并不做具体限定。
参照图3,第一属性标识包括:集合外层的对象标识以及两个集合内层的对象标识,集合外层的对象标识包括:"weather"、"outdoorTemperature"、"address"和"Info",集合内层1的对象标识包括:"id"、"config"、"top"、"cameraConnectionState"、"chassisEnvironment"、"CO"、"CO2"、"humidity"、"temperature"、"navi"、"targetSpeed"、"warningLight"、"robot"、"battery"、"percent"和"timestamp"。集合内层2的对象标识包括:"id"、"config"、"top"、"cameraConnectionState"、"chassisEnvironment"、"CO"、"CO2"、"humidity"、"temperature"、"navi"、"targetSpeed"、"warningLight"、"robot"、"battery"、"percent"和"timestamp"。
集合层级信息是:
集合内层1和集合内层2都继承位于集合外层的第一属性标识"weather"、"outdoorTemperature"、"address"和"Info"。
另外,上述集合层级信息中还包括表征属性继承关系的父子层级信息,上述集合内层的对象标识作为父层级时,包含对应的子层级。可以理解的是,子层级还可以作为父层级拥有自身的子层级,本实施例对父子层级的嵌套层数不做限定。
例如对于集合内层1来说,当"config"对象标识作为父层级时,其子层级包括3个对象标识,分别是:"cameraConnectionState"、"chassisEnvironment"和"navi";当"robot"对象标识作为父层级时,其子层级包括1个对象标识,是"battery";"timestamp"无子层级。当父层级为"cameraConnectionState",其子层级是:"top";当父层级为"chassisEnvironment",其子层级是:"CO"、"CO2"、"humidity"和"temperature";当父层级为"navi",其子层级是:"targetSpeed"和"warningLight";当父层级为"battery",其子层级是:"percent"。集合内层2与集合内层1类似。
可以理解的是,上述集合层级信息可以通过判断初始JSON格式数据中“[”和“]”两种中括号的位置信息得到,集合内层的父子层级信息可以通过判断初始JSON格式数据中“{”和“}”两种大括号的位置信息得到。
在一实施例中,树结构由多个节点构成,不同的节点具有不同的节点标识,根据上述图3中第一属性标识、集合层级信息和父子层级信息生成树结构的层级和节点标识。这里的节点标识包括上述所有的第一属性标识。
参照图4,这里进行逐层分解之后得到的树结构分为4层,第一层是集合层级信息中位于集合外层的第一属性标识,例如第一属性标识:"weather"、"outdoorTemperature"、"address"和"Info";
第二层是位于集合内层的第一属性标识,这里的第一属性标识为具有子层级的父层级对象标识(其本身不是子层级对象标识)或者不具备父子层级的对象标识。例如集合内层1的"id"、"config"、"robot"和"timestamp",以此类推,还包括集合内层2的"id"、"config"、"robot"和"timestamp"。
通过分析第二层对象标识的父子层级信息,选择第二层对象标识作为父层级时的子层级对象标识得到位于第三层的对象标识。例如集合内层1中的"cameraConnectionState"、"chassisEnvironment"、"navi"和"battery",以此类推,还包括集合内层2中的"cameraConnectionState"、"chassisEnvironment"、"navi"和"battery"。
通过分析第三层对象标识,选择第三层对象标识作为父层级时的子层级对象标识得到位于第四层的对象标识。例如集合内层1中的"top"、"CO"、"CO2"、"humidity"、"temperature"、"targetSpeed"、"warningLight"和"percent",以此类推,还包括集合内层2中的"top"、"CO"、"CO2"、"humidity"、"temperature"、"targetSpeed"、"warningLight"和"percent"。
基于上述集合层级信息中集合内层、集合外层、父子层级信息中父层级和子层级得到不同节点标识的位置关系。
参照图4,集合内层1的节点标识config具有3个分支的节点标识,分别是:"cameraConnectionState"、"chassisEnvironment"和"navi",其中"cameraConnectionState"具有1个分支的节点标识,为"top";"chassisEnvironment"具有4个分支的节点标识,为"CO"、"CO2"、"humidity"和"temperature";"navi"具有2个分支的节点标识,为"targetSpeed"和"warningLight";节点标识"robot"具有1个分支,是:"battery",其中"battery"具有1个分支的节点标识,为"percent"。集合内层2与之类似。
参照图4,由上述节点标识的层级和节点标识生成树结构,并将生成的树结构显示在图4的第一显示区域。
在一实施例中,第二显示区域显示目标属性标识,其中目标属性标识可以是根据标识模板得到,也可以是从第一属性标识中选取得到。
下面介绍利用JSON层级信息对第一属性标识进行无层级格式转换生成无层级属性信息的过程。
在一实施例中,参照图5,是一实施例示出的利用JSON层级信息对第一属性标识进行无层级格式转换生成无层级属性信息的步骤,包括:
步骤S510:将初始JSON格式数据作为第一迭代数据,基于第一迭代数据的JSON层级信息对第一迭代数据执行第一判断流程,得到集合对象数据。
在一实施例中,第一判断流程是一种迭代流程,其目的是经过多次迭代过程对初始JSON格式数据进行第一次解析。在第一判断流程的第一次迭代时,将初始JSON格式数据作为迭代初值。参照图6,第一判断流程的步骤包括:
步骤S610:若第一迭代数据存在集合层级信息,则执行第一转换流程,根据集合层级信息和第一迭代数据得到集合继承数据。
在一实施例中,由于集合层级信息包括集合内层和集合外层,如果初始JSON格式数据中有第一属性标识能够作为集合内层和/或集合外层,则执行第一转换流程,根据集合层级信息和第一迭代数据得到集合继承数据。
在一实施例中,参照图3,初始JSON格式数据表示为:
{"weather":"sunny",
"outdoorTemperature":"12.5",
"address":"reception_hall",
"Info":[
{"id":"445",
"config":{
"cameraConnectionState":{"top":"on"},
"chassisEnvironment":{"CO":"5","CO2":"1241","humidity":"53.4","temperature":"32.5"},
"navi":{"targetSpeed":5,"warningLight":"off"}},
"robot":
{"battery":{"percent":83}},
"timestamp":1623317158675},
{"id":"446",
"config":{
"cameraConnectionState":{"top":"off"},
"chassisEnvironment":{"CO":"15","CO2":"1341","humidity":"58","temperature":"35"},
"navi":{"targetSpeed":15,"warningLight":"off"}},
"robot":{"battery":{"percent":50}},
"timestamp":1623317188885}
]}
按照由上到下的执行顺序,判断初始JSON格式数据中第一属性标识是否包含集合,对于集合来说需要确定集合内层和集合外层相关信息。首先根据“[”和“]”判断得到该实施例中包含一个集合,该集合的集合外层的第一属性标识"Info"作为集合外层,其包含2个集合内层,因此针对"Info"执行第一判断流程,根据集合层级信息和初始JSON格式数据得到集合继承数据。
在一实施例中,参照图7,步骤S610中第一转换流程的步骤包括以下步骤:
步骤S6110:获取第一迭代数据中位于集合外层的第一属性标识作为外层属性标识。
在一实施例中,对于集合内层1来说,针对第一属性标识"Info"作为集合外层时,外层属性标识包括:"weather"、"outdoorTemperature"、"address"和"Info"。
步骤S6120:将位于外层属性标识的集合内层的第一属性标识作为内层属性标识。
在一实施例中,根据集合层级关系可知,内层属性标识根据外层属性标识的集合内层得到。上述图3中,对于集合内层1来说,外层属性标识"Info"具有4个内层属性标识,分别是:"id"、"config"、"robot"和"timestamp"。
步骤S6130:根据具有集合内层的外层属性标识、内层属性标识和第一预设格式生成集合属性标识。
在一实施例中,第一预设格式为:通过“.”连接外层属性标识和内层属性标识,即上述图3中,集合属性标识分别是:Info.id、Info.config、Info.robot和Info.timestamp。
步骤S6140:根据集合属性标识、外层属性标识和第一迭代数据得到集合继承数据。
在一实施例中,利用集合属性标识表征第一迭代数据中的集合内层和集合外层的信息,根据集合属性标识、外层属性标识和第一迭代数据得到集合继承数据。
如上述图3中,针对第一属性标识"Info"获得的集合继承数据表示为:
[{
"weather":"sunny",
"outdoorTemperature":"12.5",
"address":"reception_hall",
"Info.id":"445",
"Info.config":{
"cameraConnectionState":{"top":"on"},
"chassisEnvironment":{"CO":"5","CO2":"1241","humidity":"53.4","temperature":"32.5"},
"navi":{"targetSpeed":5,"warningLight":"off"}},
"Info.robot":{"battery":{"percent":83}},
"Info.timestamp":1623317158675},
//下面的还未进行迭代
{"id":"446",
"config":{
"cameraConnectionState":{"top":"off"},
"chassisEnvironment":{"CO":"15","CO2":"1341","humidity":"58","temperature":"35"},
"navi":{"targetSpeed":15,"warningLight":"off"}},
"robot":{"battery":{"percent":50}},
"timestamp":1623317188885}]
由上述集合继承数据可知,对于集合内层1来说,其第一属性标识"Info"的集合内层和集合外层之间的层级信息已经去除。由于上述集合继承数据中依然包含集合内层2关于第一属性标识"Info"的集合层级信息,因此利用下述步骤迭代第一判断流程。可以理解的是,如果一个第一属性标识不包含集合内层时,可以直接获取对应的信息存入集合继承数据中,例如上述"weather"或"address"等。
步骤S620:根据集合继承数据更新第一迭代数据,重复执行第一转换流程,直至集合继承数据中不包含集合层级信息。
在一实施例中,针对集合内层2关于第一属性标识"Info"的集合层级信息,进行第二次迭代,首先更新第一迭代数据,将第一迭代数据中关于集合内层1的层级信息去除,保留位于集合外层的外层属性标识。然后执行步骤S6110至步骤S6140,可以得到集合继承数据表示为:
[{
"weather":"sunny",
"outdoorTemperature":"12.5",
"address":"reception_hall",
"Info.id":"445",
"Info.config":{
"cameraConnectionState":{"top":"on"},
"chassisEnvironment":{"CO":"5","CO2":"1241","humidity":"53.4","temperature":"32.5"},
"navi":{"targetSpeed":5,"warningLight":"off"}},
"Info.robot":{"battery":{"percent":83}},
"Info.timestamp":1623317158675},
{
"weather":"sunny",
"outdoorTemperature":"12.5",
"address":"reception_hall",
"Info.id":"446",
"Info.config":{
"cameraConnectionState":{"top":"off"},
"chassisEnvironment":{"CO":"15","CO2":"1341","humidity":"58","temperature":"35"},
"navi":{"targetSpeed":15,"warningLight":"off"}},
"Info.robot":{"battery":{"percent":50}},
"Info.timestamp":1623317188885}]
由上述可见,由于外层属性标识"weather"、"outdoorTemperature"、"address"和"Info"属于集合内层1和集合内层2共有的对象标识,因此将这些对象标识去层级,放入集合内层1和集合内层2中,从而得到集合继承数据。
可以理解的是,如果迭代之后的集合继承数据依然包含集合层级信息,则继续执行第一转换流程,将集合继承数据作为第一迭代数据,重复执行第一转换流程,直至集合继承数据中不包含集合层级信息。
步骤S630:根据集合继承数据得到集合对象数据。
在一实施例中,经过多次迭代,集合继承数据中已经不包含集合层级信息,此时的集合继承数据为集合对象数据。
参照图3中,集合对象数据表示为:
[{"weather":"sunny",
"outdoorTemperature":"12.5",
"address":"reception_hall",
"Info.id":"445",
"Info.config":{
"cameraConnectionState":{"top":"on"},
"chassisEnvironment":{"CO":"5","CO2":"1241","humidity":"53.4","temperature":"32.5"},
"navi":{"targetSpeed":5,"warningLight":"off"}},
"Info.robot":{
"battery":{"percent":83}},
"Info.timestamp":1623317158675},
{"weather":"sunny",
"outdoorTemperature":"12.5",
"address":"reception_hall",
"Info.id":"446",
"Info.config":{
"cameraConnectionState":{"top":"off"},
"chassisEnvironment":{"CO":"15","CO2":"1341","humidity":"58","temperature":"35"},
"navi":{"targetSpeed":15,"warningLight":"off"}},
"Info.robot":{
"battery":{"percent":50}},
"Info.timestamp":1623317188885}]
上述过程对初始JSON格式数据进行第一次解析,去除初始JSON格式数据中的集合层级信息,下面执行第二次解析过程,去除初始JSON格式数据中的父子层级信息。
步骤S520:将集合对象数据作为第二迭代数据,对第二迭代数据执行第二判断流程,得到无层级属性信息。
在一实施例中,第二判断流程是一种迭代流程,其目的是经过多次迭代过程对集合对象数据进行第二次解析。在第二判断流程的第一次迭代时,将集合对象数据作为迭代初值。参照图8,第二判断流程的步骤包括:
步骤S810:若第二迭代数据存在父子层级信息,则执行第二转换流程,根据父子层级信息和第二迭代数据得到层级继承数据。
参照上述图3的集合对象数据,按照由上到下的执行顺序,由于集合内层1在集合内层2的前面,因此先针对集合内层1进行父子层级的去除。
判断集合对象数据中集合内层1的第一属性标识是否包含父层级和子层级,首先判断第一属性标识"Info.config"作为父层级,包含3个子层级,因此针对"Info.config"执行第二判断流程。
在一实施例中,对于集合内层1,参照图9,步骤S810中第二转换流程的步骤包括:
步骤S8110:获取第二迭代数据中位于父层级的集合属性标识作为父层属性标识。
在一实施例中,针对第一属性标识"Info.config",其作为父层级时子层级为"cameraConnectionState"、"chassisEnvironment"和"navi",因此集合对象数据中第一属性标识"Info.config"对应的集合属性标识为:"Info.config"。
步骤S8120:根据位于父层属性标识的子层级的第一属性标识得到子层属性标识。
在一实施例中,由于父层级包含一个或一个以上的子层级,因此父层属性标识对应于一个或一个以上子层属性标识。上述实施例中,第一属性标识的父层级"Info.config"的子层级包括3种:"cameraConnectionState"、"chassisEnvironment"和"navi",因此子层属性标识也包括对应的3种:"cameraConnectionState"、"chassisEnvironment"和"navi"。
步骤S8130:根据父层属性标识、子层属性标识和第二预设格式生成层级属性标识。
在一实施例中,第二预设格式为:通过“.”连接父层属性标识和子层属性标识,即上述图3中,层级属性标识是:"Info.config.cameraConnectionState"、"Info.config.chassisEnvironment"和"Info.config.navi"
步骤S8140:根据层级属性标识和第二迭代数据得到层级继承数据。
在一实施例中,利用层级属性标识表征第二迭代数据中的父层级和子层级的信息,进而得到层级继承数据。
如上述图3中,对于集合内层1,针对集合属性标识"Info.config"获得的层级继承数据表示为:
[{"weather":"sunny",
"outdoorTemperature":"12.5",
"address":"reception_hall",
"Info.id":"445",
"Info.config.cameraConnectionState":{
"top":"on"},
"Info.config.chassisEnvironment":{
"CO":"5","CO2":"1241","humidity":"53.4","temperature":"32.5"},
"Info.config.navi":{
"targetSpeed":5,"warningLight":"off"}},
"Info.robot":{
"battery":{"percent":83}},
"Info.timestamp":1623317158675},
{"weather":"sunny",
"outdoorTemperature":"12.5",
"address":"reception_hall",
"Info.id":"446",
"Info.config":{
"cameraConnectionState":{"top":"off"},
"chassisEnvironment":{"CO":"15","CO2":"1341","humidity":"58","temperature":"35"},
"navi":{"targetSpeed":15,"warningLight":"off"}},
"Info.robot":{
"battery":{"percent":50}},
"Info.timestamp":1623317188885}]
由上述层级继承数据可知,集合属性标识Info.config 的父层级和子层级之间的层级信息已经去除。由于上述层级继承数据中依然包含集合属性标识"Info.config.cameraConnectionState"、"Info.config.navi"等父子层级信息,因此利用下述步骤迭代第二判断流程。
步骤S820:将层级继承数据作为第二迭代数据,重复执行第二转换流程,直至层级继承数据中不包含父子层级信息。
在一实施例中,针对上述集合属性标识"Info.config.cameraConnectionState",进行第二次迭代,执行步骤S8110至步骤S8140,可以得到1个层级属性标识,例如:"Info.config.cameraConnectionState.top"。
由此可见,第二次迭代之后,层级继承数据依然包含父子层级信息,例如集合属性标识"Info.config.chassisEnvironment",因此需要继续执行第二转换流程,将层级继承数据作为第二迭代数据,重复执行第二转换流程,直至层级继承数据中不包含父子层级信息。
接着针对"Info.config.chassisEnvironment"进行第三次迭代,执行步骤S8110至步骤S8140,得到4个层级属性标识,例如:"Info.config.chassisEnvironment.CO"、"Info.config.chassisEnvironment.CO2"、"Info.config.chassisEnvironment.humidity"和"Info.config.chassisEnvironment.temperature"。以此类推,去除集合内层1和集合内层2的所有父子层级信息,得到层级继承数据。
步骤S830:根据层级继承数据得到无层级属性信息。
在一实施例中,经过多次迭代,层级继承数据中已经不包含父子层级信息,此时的层级继承数据为无层级属性信息。
参照图3中,无层级属性信息表示为:
[{"weather":"sunny",
"outdoorTemperature":"12.5",
"address":"reception_hall",
"Info.id":"445",
"Info.config.cameraConnectionState.top":"on",
"Info.config.chassisEnvironment.CO":"5",
"Info.config.chassisEnvironment.CO2":"1241",
"Info.config.chassisEnvironment.humidity":"53.4",
"Info.config.chassisEnvironment.temperature":"32.5",
"Info.config.navi.targetSpeed":5,
"Info.config.navi.warningLight":"off",
"Info.robot.battery.percent":83,
"Info.timestamp":1623317158675},
{"weather":"sunny",
"outdoorTemperature":"12.5",
"address":"reception_hall",
"Info.id":"446",
"Info.config.cameraConnectionState.top":"off",
"Info.config.chassisEnvironment.CO":"15",
"Info.config.chassisEnvironment.CO2":"1341",
"Info.config.chassisEnvironment.humidity":"58",
"Info.config.chassisEnvironment.temperature":"35",
"Info.config.navi.targetSpeed":15,
"Info.config.navi.warningLight":"off",
"Info.robot.battery.percent":50,
"Info.timestamp":1623317188885}]
上述过程对集合对象数据进行第二次解析,去除集合对象数据中的父子层级信息。
上述过程得到初始JSON格式数据的树结构以及无层级属性信息,下面描述步骤S120中目标属性标识的获取过程。
第一种方式:目标属性标识根据标识模板得到。在一实施例中,响应于模板选择指令,选择标识模板,并将标识模板中的属性标识作为目标属性标识显示在第二显示区域。
在一实施例中,参照图10,可以在第二显示区域或者其他显示区域显示“选择模板”的标志,然后通过点击该标志生成模板选择指令,在弹出的选择框中选择对应的标识模板,这里的标识模板可以是某些确定的标准或业界通用模板,例如图中示出的目标检测任务中的根据1400协议生成的模板1,将模板中包含的属性标识作为目标属性标识显示在第二显示区域。目的是将第一显示区域上传的内容转化成需要的右侧内容,便于后续处理。
可以理解的是,本实施例中标识模板也可以是空白模板,用户在弹出的选择框中选择“空白模板”,然后根据实际需要自行定义目标属性标识,再保存该模板,第二显示区域显示经过用户定义后的空白模板(此时已经包含用户定义的目标属性标识)。
第二种方式:目标属性标识根据第一属性标识得到。在一实施例中,响应于标识选择指令,在第一显示区域选择至少一个第一属性标识作为目标属性标识显示在第二显示区域,选取的第一属性标识不包含子层级。可以理解的是,标识选择指令用于在第一显示区域的树结构中选择部分第一属性标识作为目标属性标识显示在第二显示区域,这里对选择的第一属性标识的要求是:不包含子层级,也就是树结构的叶子节点。
在一实施例中,在树结构中选取部分第一属性标识得到所述目标属性标识,这里部分第一属性标识不包含子层级。例如,第一属性标识包括a、b、c和d,只有d是叶子节点,则将d作为目标属性标识。
可以理解的是,第二种方式生成的目标属性标识也可以保存成标识模板,在下一次处理时按照需求进行选择。例如有厂商A、厂商B和厂商C三个初始JSON格式数据,在对厂商A进行格式转换时,根据第一属性标识得到一组目标属性标识,此时将该组目标属性标识存储为“新模板”,再对厂商B和厂商C的初始JSON格式数据进行处理时,可以按照需求选择该“新模板”进行格式转换。
在一实施例中,参照图4,在第二显示区域显示目标属性标识。同时,为了显示内容更直观,可以在第二显示区域同步显示目标属性标识的备注信息,可以理解的是,这种备注信息可以默认显示也可以进行自定义更改增加,备注信息可以是目标属性标识的中文名称或者属性解释等。在一实施例中,将目标属性标识和/或其对应的名称或备注等信息共同构成目标属性标识。
在一实施例中,如果有业务需求时,需要将目标属性标识的名称根据实际需求进行自定义修改,具体是,对生成的目标属性标识进行修正,得到修正属性数据,在第二显示区域显示修正属性数据。例如将"CO"自定义成"COOO",则本实施例在第二显示区域中对目标属性标识进行可编辑的自定义操作之后得到自定义的目标属性标识(即修正属性数据),后续过程中利用自定义的"COOO"表示该目标属性标识"CO"。
可以理解的是,第二显示区域可以根据业务需求只显示部分或者全部目标属性标识。例如根据用户的历史使用记录,每次显示用户倾向于选取的目标属性标识,将其他的目标属性标识进行灰色显示或者隐藏显示,本实施例对此不做具体限定。
上述参照图4可知,本申请实施例的显示界面上,在第一显示区域显示初始JSON格式数据的树结构,以及在第二显示区域显示目标属性标识,下面描述可视化转换过程。
步骤S130:响应于目标操作指令,在第三显示区域显示第二属性标识与目标属性标识的连接关系。
在一实施例中,目标操作指令用于在树结构中选取第一属性标识作为第二属性标识,并建立第二属性标识与目标属性标识之间的连接关系。本实施例中,目标操作指令首先在第一显示区域选取部分第一属性标识作为第二属性标识,然后在第二显示区域选择对应的目标属性标识,以建立第二属性标识与目标属性标识之间的连接关系。
在一实施例中,参照图11,步骤S130响应于目标操作指令,在第三显示区域显示第二属性标识与目标属性标识的连接关系的步骤,包括:
步骤S1110:响应于目标操作指令生成第二属性标识和目标属性标识的连接关系。
步骤S1120:在第三显示区域显示一个或一个以上连接关系。
在一实施例中,参照图12,目标属性标识的名称是:"outdoorTemperature"、"address"、"top"、"CO"、"temperature"、"percent"和"timestamp"。在第一显示区域选取对应于目标属性标识的第一属性标识作为第二属性标识,例如:"outdoorTemperature"、"address"、"top"、"CO"、"temperature"、"percent"和"timestamp"。默认情况下,图中以粗线框表示选取动作,并不是限定,仅做示意。
可以理解的是,如果目标属性标识是基于标识模板得到,则目标属性标识的数量和第二属性标识的数量不一定相同。初始JSON格式数据不同,因此在进行第二属性标识的选择时,不一定能够选取每个目标属性标识对应的第二属性标识,如果第二属性标识的数量少于目标属性标识,则多余的目标属性标识的值数据为空。
在一实施例中,对于初始JSON格式数据中每个集合的每个集合内层其第二属性标识可以进行独立选择,如果上传到初始JSON格式数据中仅包含一个集合,且同一集合包含的集合内层的数据结构完全相同,则可以通过同一套第二属性标识同时操作每个集合内层数据。本实施例对第二属性标识的选择过程不做限定,第二属性标识可以根据实际需求进行选取,其中每个集合内层选取的第二属性标识可以不同,也可以相同。
例如上述集合内层1和集合内层2的数据结构完全相同,则可以选择一套第二属性标识同时作用于集合内层1和集合内层2。
在一实施例中,参照图3,目标属性标识表示为:
{"outdoorTemperature":" ",
"address":" ",
"top":" ",
"CO":" ",
"temperature":" ",
"percent":" ",
"timestamp":" "}
得到第二属性标识和目标属性标识后,再生成第二属性标识和目标属性标识的连接关系,在一实施例中,每个第二属性标识和对应的目标属性标识之间存在一个连接关系,连接关系用于表征这两者之间的转换关系,两者的映射关系由连接关系构成。
在一实施例中,目标操作指令可以是连线指令,也可以是拖拽指令等。如果目标操作指令是连线指令,参照图13a,第三显示区域位于第一显示区域和第二显示区域中间。该实施例中,在第一显示区域显示第二属性标识的第一连接点,以及在第二显示区域显示目标属性标识的第二连接点,图13a中第一连接点位于第二属性标识的方框右边,第二连接点位于目标属性标识的方框左边,并且由于第二属性标识和目标属性标识的对应关系,第一连接点和对应的第二连接点之间形成连接线(图中以虚线进行示意),通过连接线表征第二属性标识与目标属性标识之间的连接关系。可以理解的是图13a中仅是本实施例的一种示意,并不对本实施例的显示界面或者显示方式进行限定。另外,图中第一显示区域、第二显示区域和第三显示区域的边界可以不显示,边界大小根据实际情况设定。
在一实施例中,目标操作指令是拖拽指令,参照图13b,第三显示区域位于第一显示区域和第二显示区域的下方,第三显示区域中包含操作区,操作区分为两栏,其中一栏(图中左边)作为第一操作区,另一栏(图中右边)作为第二操作区,第一操作区和第二操作区之间关联,图中以左右两栏进行示意,但并不进行限定。图中针对集合内层1和集合内层2分开进行示意。该实施例中,将第一显示区域中第二属性标识拖拽到操作区的第一操作区,然后根据第二属性标识对应的目标属性标识,将第二属性标识对应的目标属性标识拖拽到对应于第一操作区的第二操作区,由于第一操作区和第二操作区之间存在关联信息,所以可以自动生成第二属性标识和目标属性标识的映射关系,关联信息表征第二属性标识和目标属性标识的连接关系,即默认第一操作区的第二属性标识和第二操作区的目标属性标识之间进行连接。
可以理解的是,图13b中第三显示区域的位置仅做示意,第三显示区域也可以位于第一显示区域和第二显示区域的上方、第一显示区域的左边、第二显示区域的右边或者第一显示区域和第二显示区域的中间等,本实施例对此仅做示意,不做限定。
每个第二属性标识和其目标属性标识形成一个连接关系,如果第二属性标识为一个或多个,则一个或多个连接关系形成映射关系,参照图13a和图13b,第二属性标识和目标属性标识的连接关系如下述。
连接线1(或操作区1)表征:第二属性标识"outdoorTemperature"和目标属性标识"outdoorTemperature"之间的连接关系;连接线2(或操作区2)表征:第二属性标识"address"和目标属性标识"address"之间的连接关系;连接线3(或操作区3)表征:第二属性标识"top"和目标属性标识"top"之间的连接关系;连接线4(或操作区4)表征:第二属性标识"CO"和目标属性标识"CO"之间的连接关系;连接线5(或操作区5)表征:第二属性标识"temperature"和目标属性标识"temperature"之间的连接关系;连接线6(或操作区6)表征:第二属性标识"percent"和目标属性标识"percent"之间的连接关系;连接线7(或操作区7)表征:第二属性标识"timestamp"和目标属性标识"timestamp"之间的连接关系。
经过上述步骤,可以根据第三显示区域中映射关系进行下一步骤S140的数据转换结果展示。
步骤S140:根据连接关系对应的映射关系从树结构对应的无层级属性信息中选择第二属性标识的值数据,并基于映射关系将值数据作为目标属性标识的目标值数据,根据目标属性标识和目标值数据得到目标JSON格式数据。
在一实施例中,参照图14,步骤S140根据映射关系和第二属性标识生成目标JSON格式数据的步骤包括:
步骤S1410:获取第二属性标识在无层级属性信息中对应的层级属性标识,并根据层级属性标识和连接关系得到映射关系。
在一实施例中,映射关系以键值对的方式存储,每个键值对保存一种连接关系,其中,键值对中包含第一键值和第二键值,第一键值为第二属性标识在无层级属性信息中对应的层级属性标识,第二键值为目标属性标识。
在一实施例中,参照图3,连接关系表示为:
{"outdoorTemperature":"outdoorTemperature",
"address":"address",
"top":"top",
"CO":"CO",
"temperature":"temperature",
"percent":"percent",
"timestamp":"timestamp"}
利用层级属性标识和连接关系得到的映射关系为:
{"outdoorTemperature":"outdoorTemperature",
"address":"address",
"Info.config.cameraConnectionState.top":"top",
"Info.config.chassisEnvironment.CO":"CO",
"Info.config.chassisEnvironment.temperature":"temperature",
"Info.robot.battery.percent":"percent",
"Info.timestamp":"timestamp"}
步骤S1420:获取层级属性标识对应的值数据,并基于值数据和层级属性标识构成映射解析数据。
在一实施例中,获取层级属性标识在无层级属性信息中的值数据,值数据即层级属性标识的参数值,构成映射解析结果,对于上述实施例而言,"config.cameraConnectionState.top"的参数值为"on"等,以此类推得到每个层级属性标识的参数值,构成映射解析结果,表示为:
[{//集合内层1对应的映射解析结果
"outdoorTemperature":"12.5",
"address":"reception_hall",
"Info.config.cameraConnectionState.top":"on",
"Info.config.chassisEnvironment.CO":"5",
"Info.config.chassisEnvironment.temperature":"32.5",
"Info.robot.battery.percent":83,
"Info.timestamp":1623317158675
},
{//集合内层2对应的映射解析结果
"outdoorTemperature":"12.5",
"address":"reception_hall",
"Info.config.cameraConnectionState.top":"off",
"Info.config.chassisEnvironment.CO":"15",
"Info.config.chassisEnvironment.temperature":"35",
"Info.robot.battery.percent":50,
"Info.timestamp":1623317188885}]
步骤S1430:基于映射关系和映射解析数据生成目标属性标识的键值对,并基于键值对生成目标JSON格式数据。
在一实施例中,参照图15,步骤S1430包括以下步骤:
步骤S1431:根据目标属性标识和映射关系从映射解析数据中选择值数据。
参照上述实施例,更新后的映射关系中:
“Info.config.cameraConnectionState.top":"top"”
对应的映射解析数据(以集合内层1为例说明)为:
"Info.config.cameraConnectionState.top":"on",
则当目标属性标识为"top"”时,值数据为"on"。
步骤S1432:获取目标属性标识的目标数据格式或目标数值类型。
步骤S1433:根据目标数据格式对值数据进行格式转换得到目标值数据;或,根据目标数值类型对值数据进行类型转换得到目标值数据。
在一些实施例中,目标属性标识所需要的目标值数据和获取到的值数据的数据格式或者数值要求不同。例如左侧值数据为:status:1(字符串),1的类型是字符串型;而右侧目标值数据中status的取值类型是整型,则上述步骤中目标数据格式为int整型,进行格式转换实现字符串型到整型的转换,目标值数据为:status:1(整型)。又例如取值转换:比如左侧值数据为:status:1(1代表停止协议),而右侧的目标值数据中是:status:0(0代表停止协议),则上述步骤中目标数值类型为0代表停止协议,进行类型转换得到目标值数据,目标值数据为:status:0。
可以理解的是,有可能需要同时进行格式转换和类型转换,本实施例对转换方式和转化顺序不做具体限定。
步骤S1434:将目标属性标识作为键值对的键,将目标值数据作为键值对的值。
在一实施例中,基于上述映射关系和映射解析结果,键值对可以是"top":"on",将所有的键值对进行组合,即可生成目标JSON格式数据,表示为:
[{//集合内层1对应的目标JSON格式数据
"outdoorTemperature":"12.5",
"address":"reception_hall",
"top":"on",
"CO":"5",
"temperature":"32.5",
"percent":83,
"timestamp":1623317158675
},
{//集合内层2对应的目标JSON格式数据
"outdoorTemperature":"12.5",
"address":"reception_hall",
"top":"off",
"CO":"15",
"temperature":"35",
"percent":50,
"timestamp":1623317188885}]
可以理解的是,目标JSON格式数据可以不显示直接存储在用户设定的存储位置,也可以在第四显示界面中进行显示,其中第四显示界面可以与第一显示界面、第二显示界面或第三显示界面位于同一图层,也可以浮于第一显示界面、第二显示界面和第三显示界面的上方,本实施例对此不做具体限定。
由此可见,经过上述步骤,本申请实施例的数据格式转换方法,能够在界面上上传初始JSON格式数据,然后经过后台运算在第一显示区域显示初始JSON格式数据的树结构,以及在第二显示区域显示目标属性标识,其中目标属性标识可以是根据标识模板得到的,也可以是用户在树结构中选取部分第一属性标识作为第二属性标识得到的,并得到第二属性标识与所述目标属性标识之间的映射关系,同时在第三显示区域显示第二属性标识与目标属性标识的映射关系,最后经过后台运算,基于映射关系生成目标JSON格式数据。全部操作过程对于用户来说,操作直观便捷,无需了解底层逻辑即可完成JSON格式数据的转换,减少用户的学习成本。通过对JSON的层级嵌套关系进行纵向解析,得到一个或多个无层级对象集合,实现JSON数据的扁平化;通过配置应用程序JSON数据与物联接入平台JSON数据的映射关系(通过vue的antv-x6技术,将不同厂家的JSON数据模板,与用户需要数据的key关联起来),将各种不同格式的JSON数据解析成指定格式的数据。采用纵向数据扁平化直接将数据中集合内层、集合外层、父层级和子层级进行信息集成,最终根据多个子层解析出多个对象。相对于对集合的横向数据扁平化只能解析出一个对象,层级关系体现在对象key中,与映射关系关联起来非常困难,纵向更符合数据的逻辑结构,为之后的映射关系处理提供更加便利的可能。
例如一应用场景中,参照图16,某传感器采集的数据通过对应应用程序以JSON格式文件上传到物联网接入平台的界面中,后台从上传的JSON格式文件中得到初始JSON格式数据后,进行两种解析过程以及映射关系配置,第一种是进行树结构的构建,另一种是无层级格式转换。
具体过程中,无层级格式转换的过程包括步骤:
判断初始JSON格式数据是否存在集合层级信息,如果存在,则执行第一判断流程,使得集合内层的第一属性标识能够继承集合外层的第一属性标识,形成集合继承数据。如果不存在,则将初始JSON格式数据作为第二迭代数据,直接进入第二判断流程。
接着迭代判断集合继承数据是否存在集合层级信息,如果存在,则将集合继承数据作为第一迭代数据,执行第一判断流程,否则得到集合对象数据。
然后判断集合对象数据是否存在父子层级信息,如果存在,则执行第二判断流程,使得子层级的第一属性标识能够继承父层级的父层属性标识,形成层级继承数据。如果不存在,则将集合对象数据作为无层级属性信息。
接着迭代判断层级继承数据是否存在父子层级信息,如果存在,则将层级继承数据作为第二迭代数据,执行第二判断流程,否则得到无层级属性信息。
此时,界面中第一显示区域中显示该JSON格式文件中数据的树结构,第二显示界面中显示目标属性标识,这里的目标属性标识可以根据标识模板得到,也可以是用户在树结构中选取部分第一属性标识作为第二属性标识得到。用户根据需要对目标属性标识进行名称的修改,并且用户根据需要在第一显示界面中树结构中选取全部或者部分第一属性标识作为第二属性标识,然后在第三显示界面中建立第二属性标识与第二显示界面中目标属性标识之间的映射关系,然后后台存储该映射关系,并根据映射关系进行数据流自动解析,在无层级属性信息中选取第二属性标识对应的参数值,构成映射解析数据,最后根据第三预设格式和映射解析数据生成目标JSON格式数据进行存储或显示,其中存储过程中数据流进行自动存储。
在一实施例中,为了提高用户的使用效率,可以将映射关系和映射关系的关系名称保存在映射关系历史数据中,然后响应于用户的映射关系选择操作,在显示的映射关系历史数据中根据关系名称选择对应的映射关系,并将映射关系显示在第三显示区域中。例如用户通过用户编号登录界面,后台在征得用户允许的前提下,记录用户的转换历史数据,具体是其对于每种业务的初始JSON格式数据的映射关系的构建过程,将映射关系和映射关系的关系名称保存在映射关系历史数据中,例如:映射关系1—关系名称1、映射关系2—关系名称2等,然后用户可以根据需要选择关系名称1对应的映射关系1,此时第三显示界面中显示映射关系1中第二属性标识与目标属性标识之间的连接关系。这样的目的是提高处理效率。
下面是一个2层集合嵌套的实施例。
参照图17,集合外层描述停车场信息,其中第一层集合描述停车场中的车辆信息,其中,一个停车场可以有多个车辆;第二层集合描述该车辆的出入信息,同样地,同一台车辆可以有多个出入信息。
该实施例中,根据实际需求选择的标识模板中得到的目标属性标识表示为:{"area":"","carNo":"","carType":"","passType":"","passTime":""}。
初始JSON格式数据表示为:
{"area":"智慧停车场",
"list":[{"carNo":"闽Axxxxx",
"carType":"小型车",
"currentTime":"2023-05-15 14:03:00",
"carColour":"白色",
"passRecord":[{"passType":"进入",
"passTime":"2023-05-15 14:00:00"}]
}]
}
根据初始JSON格式数据,执行第一判断流程,消除第一层集合,得到集合继承数据,表示为:
[{"area":"智慧停车场",
"list.carNo":"闽Axxxxx",
"list.carType":"小型车",
"list.currentTime":"2023-05-15 14:03:00",
"list.carColour":"白色"
"list.passRecord":[{"passType":"进入",
"passTime":"2023-05-15 14:00:00"}]
}]
对集合继承数据再次执行第一判断流程,消除第二层集合,得到集合对象数据,表示为:
[{"area":"智慧停车场",
"list.carNo":"闽Axxxxx",
"list.carType":"小型车",
"list.currentTime":"2023-05-15 14:03:00",
"list.carColour":"白色",
"list.passRecord.passType":"进入",
"list.passRecord.passTime":"2023-05-1514:00:00"}]
由于此时不存在父子层级信息,因此不需要执行第二判断流程,直接根据集合对象数据得到无层级属性信息。
映射关系为:
{"area":"area",
"list.carNo":"carNo",
"list.carType":"carType",
"list.passRecord.passType":"passType",
"list.passRecord.passTime":"passTime"}
映射解析结果为:
[{"area":"智慧停车场",
"list.carNo":"闽Axxxxx",
"list.carType":"小型车",
"list.carColour":"白色",
"list.passRecord.passType":"进入",
"list.passRecord.passTime":"2023-05-1514:00:00"}]
目标JSON格式数据为:
[{"area":"智慧停车场",
"carNo":"闽Axxxxx",
"carType":"小型车",
"carColour":"白色","passType":"进入",
"passTime":"2023-05-15 14:00:00"}]
本申请实施例提出的数据格式转换方法包含:JSON层级解析、JSON映射、JSON映射解析和数据存储。其中,JSON层级解析主要用于纵向扁平化解析应用程序上传的JSON数据,是最重要的组成模块,经过逻辑处理后,构建无层级属性信息的JSON数据方便后续处理。JSON映射主要用于构建应用程序与物联网接入平台之间的映射关系,使用键值对的方式存储第二属性标识与目标属性标识,方便两者之间的快速查询映射。JSON映射解析主要用于将无层级的集合对象通过映射关系解析成指定格式的数据,利用映射关系过滤多余数据,并基于映射关系得到最终的数据。
本申请实施例的技术架构分为前端表示层、技术服务层、数据存储层。其中前端表示层使用vue轻量级框架,具备简单易学、双向数据绑定、组件化、数据和结构的分离、虚拟DOM、运行速度快等优点,可快速集成element-plus、antv-x6、fileReader、scss等工具,从而构建前端页面与交互体验。技术服务层采用Java、JSON、webflux、RestfulAPI构建数据流框架,其中webflux是Spring提供的响应式、异步非阻塞的框架,对异步的底层实现进行了更高级的抽象和封装,提供了大量的操作符,通过声明式的链式调用方式,能够实现高效的异步编程,代码更加简洁、易于维护;采用log4j进行日志记录;采用r2dbc框架构建关系型数据库的响应式连接,使传统的关系型数据库mysql也实现数据的流式存储。数据存储层选用关系型数据库mysql进行数据存储。整体技术架构构建响应式异步非阻塞框架,能够在同等硬件服务器资源条件下提供更高的并发量和吞吐量。相对于传统框架增大并发后平均响应时间成线性增长的情况,异步非阻塞框架平均响应时间基本能够保持同一水平线,优势明显。
本申请实施例提出的数据格式转换方法,通过获取初始JSON格式数据,然后在第一显示区域显示初始JSON格式数据的树结构和第一属性标识,在第二显示区域显示目标属性标识;再利用目标操作指令在第一显示区域中对第一属性标识进行选择操作得到第二属性标识,同时将第二属性标识和第二显示区域的目标属性标识关联起来得到连接关系,并在第三显示区域自动显示该连接关系,最后根据连接关系对应的映射关系从树结构对应的无层级属性信息中选择值数据,并基于映射关系将目标属性标识和值数据进行对应,得到目标JSON格式数据。整个过程无需用户进行底层设计,可视化界面使得用户容易理解转换过程,降低学习成本,进而提高数据转换效率。
同时本申请实施例这种可视化的扁平化的处理转换过程将不同应用程序或物联设备中各种复杂格式的JSON数据,解析成另一种可自定义的、无层级的、简化JSON格式,从而解决多个应用程序之间数据交互的问题。能够支持多种复杂异构JSON格式的纵向数据解析,无需更更改代码适配,减少代码开发成本。
本发明实施例还提供一种数据格式转换装置,可以实现上述数据格式转换方法,参照图18,该装置包括:
获取模块1810:用于获取初始JSON格式数据,初始JSON格式数据包括:第一属性标识。
属性显示模块1820:用于在第一显示区域显示初始JSON格式数据的树结构,以及在第二显示区域显示目标属性标识;树结构为根据第一属性标识在初始JSON格式数据中的JSON层级信息构建的;目标属性标识根据标识模板或第一属性标识得到。
映射显示模块1830:用于响应于目标操作指令,在第三显示区域显示第二属性标识与目标属性标识的连接关系;目标操作指令用于在树结构中选取第一属性标识作为第二属性标识以及建立连接关系。
数据生成模块1840:用于根据连接关系对应的映射关系从树结构对应的无层级属性信息中选择第二属性标识的值数据,并基于映射关系将值数据作为目标属性标识的目标值数据,根据目标属性标识和目标值数据得到目标JSON格式数据;无层级属性信息为利用JSON层级信息对第一属性标识进行无层级格式转换生成的。
本实施例的数据格式转换装置的具体实施方式与上述数据格式转换方法的具体实施方式基本一致,在此不再赘述。
本发明实施例还提供了一种电子设备,包括:
至少一个存储器;
至少一个处理器;
至少一个程序;
所述程序被存储在存储器中,处理器执行所述至少一个程序以实现本发明实施上述的数据格式转换方法。该电子设备可以为包括手机、平板电脑、个人数字助理(PersonalDigital Assistant,简称PDA)、车载电脑等任意智能终端。
请参阅图19,图19示意了另一实施例的电子设备的硬件结构,电子设备包括:
处理器1901,可以采用通用的CPU(CentralProcessingUnit,中央处理器)、微处理器、应用专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本发明实施例所提供的技术方案;
存储器1902,可以采用ROM(ReadOnlyMemory,只读存储器)、静态存储设备、动态存储设备或者RAM(RandomAccessMemory,随机存取存储器)等形式实现。存储器1902可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1902中,并由处理器1901来调用执行本发明实施例的数据格式转换方法;
输入/输出接口1903,用于实现信息输入及输出;
通信接口1904,用于实现本设备与其他设备的通信交互,可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信;和
总线1905,在设备的各个组件(例如处理器1901、存储器1902、输入/输出接口1903和通信接口1904)之间传输信息;
其中处理器1901、存储器1902、输入/输出接口1903和通信接口1904通过总线1905实现彼此之间在设备内部的通信连接。
本申请实施例还提供了一种存储介质,存储介质为计算机可读存储介质,该存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述数据格式转换方法。
存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序以及非暂态性计算机可执行程序。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至该处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
本发明实施例提出的数据格式转换方法、数据格式转换装置、电子设备、存储介质,通过获取初始JSON格式数据,然后在第一显示区域显示初始JSON格式数据的树结构和第一属性标识,在第二显示区域显示目标属性标识;再利用目标操作指令在第一显示区域中对第一属性标识进行选择操作得到第二属性标识,同时将第二属性标识和第二显示区域的目标属性标识关联起来得到连接关系,并在第三显示区域自动显示该连接关系,最后根据连接关系对应的映射关系从树结构对应的无层级属性信息中选择值数据,并基于映射关系将目标属性标识和值数据进行对应,得到目标JSON格式数据。整个过程无需用户进行底层设计,可视化界面使得用户容易理解转换过程,降低学习成本,进而提高数据转换效率。
本申请实施例描述的实施例是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域技术人员可知,随着技术的演变和新应用场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本领域技术人员可以理解的是,图中示出的技术方案并不构成对本申请实施例的限定,可以包括比图示更多或更少的步骤,或者组合某些步骤,或者不同的步骤。
以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、设备中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。
本申请的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括多指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例的方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序的介质。
以上参照附图说明了本申请实施例的优选实施例,并非因此局限本申请实施例的权利范围。本领域技术人员不脱离本申请实施例的范围和实质内所作的任何修改、等同替换和改进,均应在本申请实施例的权利范围之内。

Claims (18)

1.一种数据格式转换方法,其特征在于,包括:
获取初始JSON格式数据,所述初始JSON格式数据包括:第一属性标识;
在第一显示区域显示所述初始JSON格式数据的树结构,以及在第二显示区域显示目标属性标识;所述树结构为根据所述第一属性标识在所述初始JSON格式数据中的JSON层级信息构建的;所述目标属性标识根据标识模板或所述第一属性标识得到;
响应于目标操作指令,在第三显示区域显示第二属性标识与所述目标属性标识的连接关系;所述目标操作指令用于在所述树结构中选取所述第一属性标识作为所述第二属性标识以及建立所述连接关系;
根据所述连接关系对应的映射关系从所述树结构对应的无层级属性信息中选择所述第二属性标识的值数据,并基于所述映射关系将所述值数据作为所述目标属性标识的目标值数据,根据所述目标属性标识和所述目标值数据得到目标JSON格式数据;所述无层级属性信息为利用所述JSON层级信息对所述第一属性标识进行无层级格式转换生成的。
2.根据权利要求1所述的数据格式转换方法,其特征在于,利用所述JSON层级信息对所述第一属性标识进行无层级格式转换生成所述无层级属性信息的步骤,包括:
将所述初始JSON格式数据作为第一迭代数据,基于所述第一迭代数据的JSON层级信息对所述第一迭代数据执行第一判断流程,得到集合对象数据;
将所述集合对象数据作为第二迭代数据,对所述第二迭代数据执行第二判断流程,得到所述无层级属性信息。
3.根据权利要求2所述的数据格式转换方法,其特征在于,所述JSON层级信息包括所述第一属性标识的集合层级信息;所述第一判断流程包括:
若所述第一迭代数据存在所述集合层级信息,则执行第一转换流程,根据所述集合层级信息和所述第一迭代数据得到集合继承数据;
根据所述集合继承数据更新所述第一迭代数据,重复执行所述第一转换流程,直至所述集合继承数据中不包含所述集合层级信息;
根据所述集合继承数据得到所述集合对象数据。
4.根据权利要求3所述的数据格式转换方法,其特征在于,所述JSON层级信息包括所述第一属性标识的父子层级信息;所述第二判断流程包括:
若所述第二迭代数据存在所述父子层级信息,则执行第二转换流程,根据所述父子层级信息和所述第二迭代数据得到层级继承数据;
将所述层级继承数据作为所述第二迭代数据,重复执行所述第二转换流程,直至所述层级继承数据中不包含所述父子层级信息;
根据所述层级继承数据得到所述无层级属性信息。
5.根据权利要求3所述的数据格式转换方法,其特征在于,所述集合层级信息包括:集合内层和集合外层,所述集合内层是所述集合外层的下一层级;所述第一转换流程包括:
获取所述第一迭代数据中位于所述集合外层的所述第一属性标识作为外层属性标识;
将位于所述外层属性标识的集合内层的所述第一属性标识作为内层属性标识;
根据具有所述集合内层的所述外层属性标识、所述内层属性标识和第一预设格式生成集合属性标识;
根据所述集合属性标识、所述外层属性标识和所述第一迭代数据得到所述集合继承数据。
6.根据权利要求4所述的数据格式转换方法,其特征在于,所述父子层级信息包括:父层级和子层级,所述子层级是所述父层级的下一层级;所述第二转换流程包括:
获取所述第二迭代数据中位于所述父层级的所述集合属性标识作为父层属性标识;
根据位于所述父层属性标识的子层级的所述第一属性标识得到子层属性标识;
根据所述父层属性标识、所述子层属性标识和第二预设格式生成层级属性标识;
根据所述层级属性标识和所述第二迭代数据得到所述层级继承数据。
7.根据权利要求6所述的数据格式转换方法,其特征在于,所述方法包括:
当所述目标属性标识根据标识模板得到时,则响应于模板选择指令,选择所述标识模板,并将所述标识模板中的属性标识作为所述目标属性标识显示在所述第二显示区域;
当所述目标属性标识根据所述第一属性标识得到时,则响应于标识选择指令,在所述第一显示区域选择至少一个所述第一属性标识作为所述目标属性标识显示在所述第二显示区域,选取的所述第一属性标识不包含所述子层级。
8.根据权利要求1所述的数据格式转换方法,其特征在于,所述JSON层级信息包括:集合层级信息和父子层级信息;根据所述第一属性标识在所述初始JSON格式数据中的JSON层级信息构建包含所述第一属性标识的树结构的步骤包括:
根据所述第一属性标识、所述集合层级信息和所述父子层级信息生成所述树结构的层级和所述树结构的节点标识;
基于所述层级和所述节点标识生成所述树结构。
9.根据权利要求6所述的数据格式转换方法,其特征在于,所述响应于目标操作指令,在第三显示区域显示第二属性标识与所述目标属性标识的连接关系,包括:
响应于目标操作指令生成所述第二属性标识和所述目标属性标识的连接关系;
在所述第三显示区域显示一个或一个以上所述连接关系。
10.根据权利要求9所述的数据格式转换方法,其特征在于,所述根据所述连接关系对应的映射关系从所述树结构对应的无层级属性信息中选择所述第二属性标识的值数据,并基于所述映射关系将所述值数据作为所述目标属性标识的目标值数据,根据所述目标属性标识和所述目标值数据得到目标JSON格式数据,包括:
获取所述第二属性标识在所述无层级属性信息中对应的层级属性标识,并根据所述层级属性标识和所述连接关系得到所述映射关系;
获取所述层级属性标识对应的值数据,并基于所述值数据和所述层级属性标识构成映射解析数据;
基于所述映射关系和所述映射解析数据生成所述目标属性标识的键值对,并基于所述键值对生成所述目标JSON格式数据。
11.根据权利要求10所述的数据格式转换方法,其特征在于,所述基于所述映射关系和所述映射解析数据生成所述目标属性标识的键值对,包括:
根据所述目标属性标识和所述映射关系从所述映射解析数据中选择所述值数据;
获取所述目标属性标识的目标数据格式或目标数值类型;
根据所述目标数据格式对所述值数据进行格式转换得到所述目标值数据;或,根据所述目标数值类型对所述值数据进行类型转换得到所述目标值数据;
将所述目标属性标识作为所述键值对的键,将所述目标值数据作为所述键值对的值。
12.根据权利要求9所述的数据格式转换方法,其特征在于,所述目标操作指令是连线指令,所述第三显示区域位于所述第一显示区域和所述第二显示区域之间;所述生成所述第二属性标识和所述目标属性标识的连接关系,包括:
在所述第一显示区域显示所述第二属性标识的第一连接点;
在所述第二显示区域显示所述目标属性标识的第二连接点;所述第一连接点和对应的所述第二连接点在所述第三显示区域形成连接线;所述连接线表征所述连接关系。
13.根据权利要求9所述的数据格式转换方法,其特征在于,所述目标操作指令是拖拽指令,所述第三显示区域包括操作区,所述操作区包括:第一操作区和与所述第一操作区关联的第二操作区;所述生成所述第二属性标识和所述目标属性标识的连接关系,包括:
将所述第二属性标识对应的所述目标属性标识拖拽到所述操作区的所述第二操作区;
将所述第一显示区域中所述第二属性标识拖拽到对应于所述第二操作区的所述第一操作区;所述第一操作区和所述第二操作区之间的关联信息表征所述第二属性标识和所述目标属性标识的连接关系。
14.根据权利要求1至13任一项所述的数据格式转换方法,其特征在于,所述在第二显示区域显示目标属性标识之后,还包括:
对生成的所述目标属性标识进行修正,得到修正属性数据;
在所述第二显示区域显示所述修正属性数据。
15.根据权利要求1至13任一项所述的数据格式转换方法,其特征在于,所述方法还包括:
将所述映射关系和所述映射关系的关系名称保存在映射关系历史数据中;
响应于映射关系选择操作,在显示的所述映射关系历史数据中根据所述关系名称选择对应的所述映射关系,并将所述映射关系显示在所述第三显示区域中。
16.一种数据格式转换装置,其特征在于,包括:
获取模块:用于获取初始JSON格式数据,所述初始JSON格式数据包括:第一属性标识;
属性显示模块:用于在第一显示区域显示所述初始JSON格式数据的树结构,以及在第二显示区域显示目标属性标识;所述树结构为根据所述第一属性标识在所述初始JSON格式数据中的JSON层级信息构建的;所述目标属性标识根据标识模板或所述第一属性标识得到;
映射显示模块:用于响应于目标操作指令,在第三显示区域显示第二属性标识与所述目标属性标识的连接关系;所述目标操作指令用于在所述树结构中选取所述第一属性标识作为所述第二属性标识以及建立所述连接关系;
数据生成模块:用于根据所述连接关系对应的映射关系从所述树结构对应的无层级属性信息中选择所述第二属性标识的值数据,并基于所述映射关系将所述值数据作为所述目标属性标识的目标值数据,根据所述目标属性标识和所述目标值数据得到目标JSON格式数据;所述无层级属性信息为利用所述JSON层级信息对所述第一属性标识进行无层级格式转换生成的。
17.一种电子设备,其特征在于,所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现权利要求1至15任一项所述的数据格式转换方法。
18.一种计算机可读存储介质,所述存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至15中任一项所述的数据格式转换方法。
CN202310813356.6A 2023-07-05 2023-07-05 数据格式转换方法、装置、设备和存储介质 Active CN116522871B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310813356.6A CN116522871B (zh) 2023-07-05 2023-07-05 数据格式转换方法、装置、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310813356.6A CN116522871B (zh) 2023-07-05 2023-07-05 数据格式转换方法、装置、设备和存储介质

Publications (2)

Publication Number Publication Date
CN116522871A CN116522871A (zh) 2023-08-01
CN116522871B true CN116522871B (zh) 2024-01-09

Family

ID=87401588

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310813356.6A Active CN116522871B (zh) 2023-07-05 2023-07-05 数据格式转换方法、装置、设备和存储介质

Country Status (1)

Country Link
CN (1) CN116522871B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117555955A (zh) * 2023-12-06 2024-02-13 广州此声网络科技有限公司 数据转换方法、数据转换装置、计算机设备、存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110688343A (zh) * 2019-08-26 2020-01-14 天津开心生活科技有限公司 一种转换数据格式的方法及装置
CN111190900A (zh) * 2019-12-10 2020-05-22 浙江工业大学 一种云计算模式下json数据可视化优化方法
CN111858472A (zh) * 2020-08-03 2020-10-30 平安国际智慧城市科技股份有限公司 文件格式转换方法、装置、计算机设备及存储介质
CN112559606A (zh) * 2019-09-26 2021-03-26 北京国双科技有限公司 用于json格式数据的转换方法及转换装置
CN112882974A (zh) * 2021-02-09 2021-06-01 深圳市云网万店科技有限公司 一种json数据转换方法、装置、计算机设备和存储介质
US11263386B1 (en) * 2020-01-31 2022-03-01 Splunk Inc. Optimizing the display of hierarchically organized data in a web application
CN114491172A (zh) * 2022-04-07 2022-05-13 深圳竹云科技股份有限公司 树形结构节点的快速检索方法、装置、设备及存储介质
WO2022222577A1 (zh) * 2021-04-20 2022-10-27 华为技术有限公司 数据格式的转换方法、装置、设备及计算机可读存储介质
CN115329759A (zh) * 2022-10-17 2022-11-11 北京宝兰德软件股份有限公司 信息处理方法、装置、设备及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106936871B (zh) * 2015-12-30 2020-05-29 阿里巴巴集团控股有限公司 界面展示数据的方法及装置

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110688343A (zh) * 2019-08-26 2020-01-14 天津开心生活科技有限公司 一种转换数据格式的方法及装置
CN112559606A (zh) * 2019-09-26 2021-03-26 北京国双科技有限公司 用于json格式数据的转换方法及转换装置
CN111190900A (zh) * 2019-12-10 2020-05-22 浙江工业大学 一种云计算模式下json数据可视化优化方法
US11263386B1 (en) * 2020-01-31 2022-03-01 Splunk Inc. Optimizing the display of hierarchically organized data in a web application
CN111858472A (zh) * 2020-08-03 2020-10-30 平安国际智慧城市科技股份有限公司 文件格式转换方法、装置、计算机设备及存储介质
CN112882974A (zh) * 2021-02-09 2021-06-01 深圳市云网万店科技有限公司 一种json数据转换方法、装置、计算机设备和存储介质
WO2022222577A1 (zh) * 2021-04-20 2022-10-27 华为技术有限公司 数据格式的转换方法、装置、设备及计算机可读存储介质
CN114491172A (zh) * 2022-04-07 2022-05-13 深圳竹云科技股份有限公司 树形结构节点的快速检索方法、装置、设备及存储介质
CN115329759A (zh) * 2022-10-17 2022-11-11 北京宝兰德软件股份有限公司 信息处理方法、装置、设备及存储介质

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Comparison between JSON and XML in Applications Based on AJAX;Boci Lin et.al;《2012 International Conference on Computer Science and Service System》;第1174-1177页 *
一种基于树形结构的Sql结果集向Json数据的转换算法;方耀耀;;电子测试(第03期);第59-61页 *
基于微信小程序的校园心理健康平台的开发;孙悦等;《Computer Knowledge and Technology 电脑知识与技术》;第111-115页 *

Also Published As

Publication number Publication date
CN116522871A (zh) 2023-08-01

Similar Documents

Publication Publication Date Title
US11442988B2 (en) Method and system for editing and maintaining a graph schema
US11768875B2 (en) Monitoring system control interface for asset tree determination
US10564622B1 (en) Control interface for metric definition specification for assets and asset groups driven by search-derived asset tree hierarchy
US10048948B2 (en) Optimized retrieval of custom string resources
US11151761B2 (en) Analysing Internet of Things
US20160085793A1 (en) Model-driven data entry validation
US20140089786A1 (en) Automated Processor For Web Content To Mobile-Optimized Content Transformation
CN116522871B (zh) 数据格式转换方法、装置、设备和存储介质
CN112199086A (zh) 自动编程控制系统、方法、装置、电子设备及存储介质
CN110929489A (zh) 一种表单生成及表单数据处理方法及系统
CN111581920A (zh) 文档转换方法、装置、设备及计算机存储介质
CN114328672A (zh) 一种基于数字孪生的数字农田场景映射同步装置及方法
CN114730256A (zh) 用于分布式低代码/无代码计算环境的计算机化的系统和方法
CN113467771B (zh) 一种基于模型的工业边云协同系统和方法
US11210278B1 (en) Asset group interface driven by search-derived asset tree hierarchy
KR20210035348A (ko) 유사 그룹 요소 추출
Malewski et al. StarFL–a modularised metadata language for sensor descriptions
CN113806429A (zh) 基于大数据流处理框架的画布式日志分析方法
CN114185750A (zh) 流程监控方法、装置、设备及存储介质
CN102804177B (zh) 提供自适应上下文模型框架的方法、装置
CN111638926A (zh) 人工智能在Django框架中的一种实现方法
US20130218893A1 (en) Executing in-database data mining processes
CN115186214A (zh) 页面配置方法、装置、计算机设备及计算机可读存储介质
CN114385740A (zh) 一种基于铀矿地质云平台的可视化展示系统及方法
CN116263659A (zh) 数据处理方法、装置、计算机程序产品、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant