CN111597390A - 一种数据格式转换框架 - Google Patents

一种数据格式转换框架 Download PDF

Info

Publication number
CN111597390A
CN111597390A CN202010184466.7A CN202010184466A CN111597390A CN 111597390 A CN111597390 A CN 111597390A CN 202010184466 A CN202010184466 A CN 202010184466A CN 111597390 A CN111597390 A CN 111597390A
Authority
CN
China
Prior art keywords
data
node
json
conversion
format
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.)
Pending
Application number
CN202010184466.7A
Other languages
English (en)
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.)
Yonyou Network Technology Co Ltd
Original Assignee
Yonyou Network Technology Co Ltd
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 Yonyou Network Technology Co Ltd filed Critical Yonyou Network Technology Co Ltd
Priority to CN202010184466.7A priority Critical patent/CN111597390A/zh
Publication of CN111597390A publication Critical patent/CN111597390A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/84Mapping; Conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven

Abstract

本发明属于数据转换技术领域,尤其为一种数据格式转换框架,包括以下步骤:A、输入源数据;B、判断源数据是否为JSON格式数据,若是则进行下一步,若不是则将源数据格式转换成JSON格式数据;C、将JSON格式数据中每个节点利用坐标表示,通过坐标定义每一个或每一种类型的节点。本发明的转换框架可以极大程度减少旧有技术在转换数据时产生的大量样板代码,且极大程度提高可读性和可维护性;通过使用本发明数据转换框架,代码的可靠性和可维护性有了质的提升;本发明通过自定义数据结构坐标表示、转换规则和数据转换引擎,使得不同格式间的数据转换可以便捷、高效进行,减少代码的复杂度,同时提高数据转换的可维护性。

Description

一种数据格式转换框架
技术领域
本发明涉及数据转换技术领域,具体为一种数据格式转换框架。
背景技术
数据转换旨在对不同格式的数据进行转换,由源格式转换为目标系统所 需要的目标数据格式。
在To B领域的项目开发中,经常会涉及到大量的第三方接口对接及服务 调用。在类似的系统对接当中,往往会遇到数据存储方式不一致、数据格式 不统一等若干问题,造成这些问题的原因如下:
1、数据存储方式不一致,在与传统项目对接时,数据的提供方时常会提 供XML格式的数据,在调用方以处理JSON格式数据为主;
2、数据字段名称不统一,相同意义的字段,在不同的系统中常有不同的 命名;
3、数据结构层级不一致,接口调用中,常常会出现数据结构的层级不一 致,例如在第三方接口中返回两层的JSON数据结构,在调用方数据结构可能 为一层,或是三层;
4、数据提供方接口变更,提供服务的数据提供方变更返回数据的存储结 构,造成调用方相应调整。
目前针对上述问题,现有的技术解决方案仅能在源代码层面上,针对每 一种数据类型间转换,编写大量的样板代码。但是这样会存在以下主要问题:
1、针对每个转换都要编写大量样板代码,代码冗余度过高,当数据转换 场景增加时,冗余度只增不减;
2、硬编码实现数据转换部分的代码,若进行后期维护或升级,难度极大;
3、格式转换相关代码可读性差,针对一个复杂的数据转换,程序员出错 概率极高;
4、由于XML格式不包含数组元素,在与JSON互转时,目前现有的所有 转换工具无法实现语义信息不丢失且格式统一的XML、JSON转换。
针对现有现阶段数据转换是通过在代码中定义实体类型、创建大量的实 体对象,并进行属性赋值实现,转化代码可读性差,后期维护成本较高等问 题。本发明人通过选用以JSON格式数据转换为标准,提出一种数据格式转换 方法,定义了数据格式的描述方式,及转换规则,通过规则配置+转换框架相 结合的方式,实现任意的数据格式转换,消除了数据转换所产生的大量样板 代码,也极大提升了代码的可读性。
发明内容
(一)解决的技术问题
针对现有技术的不足,本发明提供了一种数据格式转换框架,解决了上 述背景技术中提出的问题。
(二)技术方案
为实现上述目的,本发明提供如下技术方案:一种数据格式转换框架, 包括以下步骤:
A、输入源数据;
B、判断源数据是否为JSON格式数据,若是则进行下一步,若不是则将 源数据格式转换成JSON格式数据;
C、将JSON格式数据中每个节点利用坐标表示,通过坐标定义每一个或 每一种类型的节点;
D、数据转换引擎根据转换规则对步骤C得到的数据进行数据转换操作;
E、得到目标数据并输出。
作为本发明的一种优选技术方案,所述步骤B中,若数据格式为XML数 据,则需要根据是否包含标签内属性来进行格式转换操作。
作为本发明的一种优选技术方案,所述JSON格式数据的节点包括JSON 对象数组、JSON常量数组、JSON对象和JSON常量。
作为本发明的一种优选技术方案,所述数据转换引擎包括数据压缩和数 据解压。
作为本发明的一种优选技术方案,所述转换规则包括:
①每个JSON转换规则必须存在唯一的根节点。若不存在,则可以手动添 加"r->r"(针对JSON对象)或"r.[->r.["(针对JSON数组)为根节点;
②若转换的某个目标JSON节点为数组类型,则该描述规则在该节点下必 须建立子规则节点;
③若目标树的某个子节点,某个子节点的某个过程中路径下存在多个子 路径,则该过程中路径节点下必须建立子规则节点;否则,无需针对目标节 点路径中的每个节点建立子规则节点;
④转换规则节点可以不存在源节点,但必须存在目标节点,如果不存在 源节点,表示该节点直接在目标节点中创建,在源节点中无对应节点;
⑤转换规则当中的任何节点(除根节点),其目标节点必须与上层节点 存在主子关系(下层节点为上层节点的子节点),否则转换规则无效。
(三)有益效果
与现有技术相比,本发明提供了一种数据格式转换框架,具备以下有益 效果:
1、本发明的转换框架可以极大程度减少旧有技术在转换数据时产生的 大量样板代码,且极大程度提高可读性和可维护性;通过使用本发明数据转 换框架,代码的可靠性和可维护性有了质的提升。
2、本发明通过自定义数据结构坐标表示、转换规则和数据转换引擎,使 得不同格式间的数据转换可以便捷、高效进行,减少代码的复杂度,同时提 高数据转换的可维护性。
3、本发明具有还具有通用性、复用性、扩展型、动态性、灵活性的优势。
附图说明
图1为本发明实施例中JSON树节点坐标;
图2为本发明实施例中数据转换工作图;
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行 清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而 不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做 出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例
请参阅图1-2,本发明提供以下技术方案:一种数据格式转换框架,包括 以下步骤:
A、输入源数据;
B、判断源数据是否为JSON格式数据,若是则进行下一步,若不是则将 源数据格式转换成JSON格式数据;若数据格式为XML数据,则需要根据是否 包含标签内属性来进行格式转换操作;
其中以示例XML数据为例:
示例XML数据如下:
Figure BDA0002413645590000041
①若是包含标签内属性,转换成的JSON如下:
Figure BDA0002413645590000042
Figure BDA0002413645590000051
②若是不包含标签内属性,转换成的JSON如下:
{
"a":[{"d":"aaa"},{"d":"bbb"},{"d":"fff"}]
}
由上可知,不包含标签内属性的XML->JSON转换,结果更加精简,因此 在标签内属性信息不重要的情况下,优先使用不包含标签内属性的XML转换。
其中JSON是一种轻量级的数据交换格式,在目前的web开发中作为主流 的数据传递格式广泛应用,开发中涉及到的绝大多数数据转换,都以JSON格 式作为承载方式,使用不同的JSON树结构承载数据;因此,本发明数据转换 框架主要以JSON格式的数据转换为主进行实现,对于其他数据类型,主要为 XML类型数据,XML格式在目前的数据传输当中也有应用,为了兼容XML格式 数据的传输和转换,本发明还实现了XML到JSON的互转方式,因此本发明最 终以JSON格式数据为基础进行转换。
针对XML中没有数组的情况,本发明采用了如下原则:
①若某节点下存在多个同名子节点,则该子节点翻译为JSON数组;
②若制定了某节点为数组节点,则该节点翻译为JSON数组(不管其下是 否存在多个同名子节点);
③对于标签内属性,提供包含该属性的转换和不包含该属性的转换两种 方式。
C、将JSON格式数据中每个节点利用坐标表示,通过坐标定义每一个或 每一种类型的节点;JSON格式数据的节点包括JSON对象数组、JSON常量数 组、JSON对象和JSON常量;其中以示例JSON为例:
示例JSON如下:
Figure BDA0002413645590000061
根据示例JSON,然后对每个节点以坐标的方式进行表示可以得到如说明 书附图1所示的每个节点坐标表示图。
D、数据转换引擎根据转换规则对步骤C得到的数据进行数据转换操作; 转换规则包括:
①每个JSON转换规则必须存在唯一的根节点。若不存在,则可以手动添 加"r->r"(针对JSON对象)或"r.[->r.["(针对JSON数组)为根节点;
②若转换的某个目标JSON节点为数组类型,则该描述规则在该节点下必 须建立子规则节点;
③若目标树的某个子节点,某个子节点的某个过程中路径下存在多个子 路径,则该过程中路径节点下必须建立子规则节点;否则,无需针对目标节 点路径中的每个节点建立子规则节点;
④转换规则节点可以不存在源节点,但必须存在目标节点,如果不存在 源节点,表示该节点直接在目标节点中创建,在源节点中无对应节点;
⑤转换规则当中的任何节点(除根节点),其目标节点必须与上层节点 存在主子关系(下层节点为上层节点的子节点),否则转换规则无效。
对于示例JSON,若目标JSON为源JSON的每个key跟后面加上后缀1, 则转换规则如下:
Figure BDA0002413645590000071
本发明中,数据转换基于JSON坐标表示和转换规则表示实现,核心转换 时通过数据转换引擎实现,其中数据转换引擎包括数据压缩和数据解压:
①数据压缩:
基于转换规则,对源JSON进行遍历,并进行信息提取,对目标JSON数 据中存在的数据进行压缩,创建压缩树节点CompressedNode;
数据压缩过程中,还进行了路径压缩,例如:对于{“a”:1},若目标JSON 树中a元素的值存在于JSON树的第五层,既为:
{“a1”:{“a2”:{“a3”:{“a4”:{“a5”:1}}}}}
则在压缩树中,只用一个单个节点表示目标路径,以及该路径下元素的 值;
②数据解压:
数据压缩后得到压缩树CompressedNode节点,若要转换为目标数据格式 的JSON树结构,还需要对压缩树进行解压缩;例如,对于上述的{“a”:1}, 转换为目标数据格式时,需要对中间层的CompressedNode解压缩。将单层的 CompressedNode节点,解压缩为目标的五层JSON树结构,其中整个转换工作 如说明书附图2所示。
E、得到目标数据并输出。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限 制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的 技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或 者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作 的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (5)

1.一种数据格式转换框架,其特征在于:包括以下步骤:
A、输入源数据;
B、判断源数据是否为JSON格式数据,若是则进行下一步,若不是则将源数据格式转换成JSON格式数据;
C、将JSON格式数据的JSON树中每个节点利用坐标表示,通过坐标定义每一个或每一种类型的节点;
D、数据转换引擎根据转换规则对步骤C得到的数据进行数据转换操作;
E、得到目标数据并输出。
2.根据权利要求1所述的一种数据格式转换框架,其特征在于:所述步骤B中,若数据格式为XML数据,则需要根据是否包含标签内属性来进行格式转换操作。
3.根据权利要求1所述的一种数据格式转换框架,其特征在于:所述JSON格式数据的节点包括JSON对象数组、JSON常量数组、JSON对象和JSON常量。
4.根据权利要求1所述的一种数据格式转换框架,其特征在于:所述数据转换引擎包括数据压缩和数据解压。
5.根据权利要求1所述的一种数据格式转换框架,其特征在于:所述转换规则包括:
①每个JSON转换规则必须存在唯一的根节点。若不存在,则可以手动添加"r->r"(针对JSON对象)或"r.[->r.["(针对JSON数组)为根节点;
②若转换的某个目标JSON节点为数组类型,则该描述规则在该节点下必须建立子规则节点;
③若目标树的某个子节点,某个子节点的某个过程中路径下存在多个子路径,则该过程中路径节点下必须建立子规则节点;否则,无需针对目标节点路径中的每个节点建立子规则节点;
④转换规则节点可以不存在源节点,但必须存在目标节点,如果不存在源节点,表示该节点直接在目标节点中创建,在源节点中无对应节点;
⑤转换规则当中的任何节点(除根节点),其目标节点必须与上层节点存在主子关系(下层节点为上层节点的子节点),否则转换规则无效。
CN202010184466.7A 2020-03-17 2020-03-17 一种数据格式转换框架 Pending CN111597390A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010184466.7A CN111597390A (zh) 2020-03-17 2020-03-17 一种数据格式转换框架

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010184466.7A CN111597390A (zh) 2020-03-17 2020-03-17 一种数据格式转换框架

Publications (1)

Publication Number Publication Date
CN111597390A true CN111597390A (zh) 2020-08-28

Family

ID=72187251

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010184466.7A Pending CN111597390A (zh) 2020-03-17 2020-03-17 一种数据格式转换框架

Country Status (1)

Country Link
CN (1) CN111597390A (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101354759A (zh) * 2007-07-23 2009-01-28 兰雨晴 一种基于元模型的工作流流程定义转换的方法及系统
GB201417283D0 (en) * 2013-10-01 2014-11-12 Cloudera Inc Background format optimization for enhanced SQL-like queries in hadoop
CN104410667A (zh) * 2014-10-31 2015-03-11 北京思特奇信息技术股份有限公司 一种xml报文到json报文的转换方法及系统
CN108170864A (zh) * 2018-01-29 2018-06-15 方欣科技有限公司 一种外部数据导入申报数据加工处理方法
CN108763546A (zh) * 2018-05-31 2018-11-06 北京五八信息技术有限公司 一种数据格式的转换方法、装置、存储介质及终端
CN109739740A (zh) * 2018-11-22 2019-05-10 南京航空航天大学 一种aadl模型组合形式化验证方法
CN109871206A (zh) * 2019-03-14 2019-06-11 杭州安恒信息技术股份有限公司 Json树的视图化方法、装置、设备及可读存储介质
CN110110152A (zh) * 2018-01-18 2019-08-09 深圳市爱思软件技术有限公司 思维导图的处理方法、装置、计算机设备和存储介质
CN110347879A (zh) * 2019-07-12 2019-10-18 上海熙菱信息技术有限公司 一种基于规则的数据标准化方法及系统
CN110688343A (zh) * 2019-08-26 2020-01-14 天津开心生活科技有限公司 一种转换数据格式的方法及装置

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101354759A (zh) * 2007-07-23 2009-01-28 兰雨晴 一种基于元模型的工作流流程定义转换的方法及系统
GB201417283D0 (en) * 2013-10-01 2014-11-12 Cloudera Inc Background format optimization for enhanced SQL-like queries in hadoop
CN104410667A (zh) * 2014-10-31 2015-03-11 北京思特奇信息技术股份有限公司 一种xml报文到json报文的转换方法及系统
CN110110152A (zh) * 2018-01-18 2019-08-09 深圳市爱思软件技术有限公司 思维导图的处理方法、装置、计算机设备和存储介质
CN108170864A (zh) * 2018-01-29 2018-06-15 方欣科技有限公司 一种外部数据导入申报数据加工处理方法
CN108763546A (zh) * 2018-05-31 2018-11-06 北京五八信息技术有限公司 一种数据格式的转换方法、装置、存储介质及终端
CN109739740A (zh) * 2018-11-22 2019-05-10 南京航空航天大学 一种aadl模型组合形式化验证方法
CN109871206A (zh) * 2019-03-14 2019-06-11 杭州安恒信息技术股份有限公司 Json树的视图化方法、装置、设备及可读存储介质
CN110347879A (zh) * 2019-07-12 2019-10-18 上海熙菱信息技术有限公司 一种基于规则的数据标准化方法及系统
CN110688343A (zh) * 2019-08-26 2020-01-14 天津开心生活科技有限公司 一种转换数据格式的方法及装置

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
FUMIAKI KANAYAMA; YASUYUKI NISHIBAYASHI: ""Development of autonomous power electronics products with communication middleware"", 《2014 IEEE INTERNATIONAL CONFERENCE ON SMART GRID COMMUNICATIONS (SMARTGRIDCOMM)》 *
FUMIAKI KANAYAMA; YASUYUKI NISHIBAYASHI: ""Development of autonomous power electronics products with communication middleware"", 《2014 IEEE INTERNATIONAL CONFERENCE ON SMART GRID COMMUNICATIONS (SMARTGRIDCOMM)》, 15 January 2015 (2015-01-15) *
陈玮等: "利用JSON降低XML数据冗余的研究", 《计算机应用与软件》 *
陈玮等: "利用JSON降低XML数据冗余的研究", 《计算机应用与软件》, no. 09, 15 September 2012 (2012-09-15) *

Similar Documents

Publication Publication Date Title
US8484231B2 (en) System and method for data mapping and information sharing
CN110222237B (zh) 数据库表和xml报文的转换方法及其系统
US5566332A (en) Method and combination for minimizing data conversions when data is transferred between a first database storing data in a first format and a second database storing data in a second format
CN101436185B (zh) 一种利用xml内存树实现多种文件兼容的方法
CN101222476A (zh) 一种可扩展标记语言文件编辑器、文件传输方法及系统
CN109213820B (zh) 一种实现多种类型的数据库融合使用的方法
CN109408043A (zh) 一种程序生成方法及装置
CN111324619B (zh) 微服务系统中的对象更新方法、装置、设备和存储介质
CN111629081A (zh) 互联网协议ip地址数据处理方法、装置及电子设备
CN101710336A (zh) 一种利用关系中间件加速数据处理的方法
CN101500145A (zh) 一种基于双向机顶盒的数字家庭公交查询系统
CN112883022A (zh) 一种基于xml模板的对象数据清洗转换方法
CN106789898A (zh) 远程数据传输终端、系统及其编码、解码方法
CN101848148A (zh) 应用于金融报文语言的数据传输处理系统、装置及方法
CN104991785A (zh) 一种标准化临床数据业务支撑系统及方法
US6785682B2 (en) Data processing system, method and computer program product
CN111552839B (zh) 一种基于xml模板的对象转换方法
CN114327493A (zh) 数据处理方法及装置、电子设备、计算机可读介质
CN102111160A (zh) 用于反应式系统测试的编解码系统及其编解码器
CN111597390A (zh) 一种数据格式转换框架
CN109241498A (zh) Xml文件处理方法、设备和存储介质
CN105528424B (zh) 大数据环境下实现数据持久化的系统及方法
CN112214461B (zh) 一种遥感元数据的模糊xml压缩方法
CN114003583A (zh) 一种目标格式数据请求体的构建方法、装置、介质及设备
CN112685426A (zh) 一种基于NiFi的Kafka消费NewSQL CDC流数据转换方法

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