CN109902274B - 一种将json字符串转化为thrift二进制流的方法及系统 - Google Patents

一种将json字符串转化为thrift二进制流的方法及系统 Download PDF

Info

Publication number
CN109902274B
CN109902274B CN201910132387.9A CN201910132387A CN109902274B CN 109902274 B CN109902274 B CN 109902274B CN 201910132387 A CN201910132387 A CN 201910132387A CN 109902274 B CN109902274 B CN 109902274B
Authority
CN
China
Prior art keywords
field
information
binary stream
metadata
target
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
CN201910132387.9A
Other languages
English (en)
Other versions
CN109902274A (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.)
Jintian Dongyi Technology Co ltd
Original Assignee
Jintian Dongyi 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 Jintian Dongyi Technology Co ltd filed Critical Jintian Dongyi Technology Co ltd
Priority to CN201910132387.9A priority Critical patent/CN109902274B/zh
Publication of CN109902274A publication Critical patent/CN109902274A/zh
Application granted granted Critical
Publication of CN109902274B publication Critical patent/CN109902274B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例提供一种将json字符串转化为thrift二进制流的方法及系统,该方法包括:输入待转换的json字符串数据和对应服务结构体元数据信息;根据元数据信息,判断待转换json数据中的每一字段能否在元数据信息中查找到;对于任一字段,若字段能在元数据信息中查找到,从元数据信息中获取字段对应的类型信息;将任一字段的名称、值以及类型信息写入到目标thrift二进制流中。本发明实施例提出的基于string‑stream的流式处理机制,不需要在内存中构建好整个json对象再做处理,它对内存的消耗取决于json结构的深度而不是长度。因此,本发明实施例提供的方法可以使用极少的内存实现对大json的处理,并因此带来性能提升,达到跟原生序列化器相当的性能。

Description

一种将json字符串转化为thrift二进制流的方法及系统
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种将json字符串转化为thrift二进制流的方法及系统。
背景技术
目前采用二进制协议的主流通讯协议包括thrift以及protocolbuf,它们都以高性能著称,而json和xml是较为通用的协议,得到各大语言平台的广泛支持,然而这种基于字符串的协议格式,在编解码和传输效率上,却远不如二进制协议。
为了平衡通讯协议的通用性和高效率,一般的,微服务集群内部采用二进制协议,而对外则通过api网关提供基于http的json协议。那么,如何高效的把json字符串转换为二进制协议格式,就是一个比较大的挑战了。
目前的主流做法的思路是string→JSONObject→POJO→Binary,需要对请求进行多次转换:
(1)、将JSON字符串转换为JSON对象模型,JSON对象模型即是指JSONObject。
(2)、通过三方JSON-POJO映射框架,将JSONObject转换成为POJO。
(3)、通过二进制协议框架生成的POJO序列化器完成从POJO到thrfit的转换过程。
(4)、部分框架可以结合(1)和(2),直接从JSON字符串转换成为POJO。
不过,这个方案存在如下缺点:
这个过程经过了三次转换,会产生大量的临时对象,有很大的内存要求,使用反射方式对于旨在榨干服务器性能以获取高吞吐量的系统来说,难以达到性能最佳。
现有技术有很强的“类型”需求,必须依赖POJO包,也就是要求依赖服务的api包,这个依赖会降低API网关的动态能力,使得部署维护复杂。
发明内容
针对上述问题,本发明实施例提供一种将json字符串转化为thrift二进制流的方法及系统。
第一方面,本发明实施例提供一种将json字符串转化为thrift二进制流的方法,包括:
输入待转换json字符串数据和对应服务结构体元数据信息,所述元数据包括微服务的所有接口方法、每个方法的输入参数和输出参数、每个输入参数所对应的结构体信息、每个输出参数所对应的结构体信息以及每个结构体的所有字段信息;
根据所述元数据信息,判断所述待转换json字符串数据中的每一字段能否在所述元数据信息中查找到;
对于任一字段,若所述任一字段能在所述元数据信息中查找到,从所述元数据信息中获取所述任一字段和所述任一字段的类型信息;
将所述任一字段的名称、所述任一字段的值和所述任一字段的类型信息写入到目标thrift二进制流中。
第二方面,本发明实施例提供一种将json字符串转化为thrift二进制流的系统,包括:
第一模块,用于输入待转换json字符串数据和对应服务结构体元数据信息,所述元数据包括微服务的所有接口方法、每个方法的输入参数和输出参数、每个输入参数所对应的结构体信息、每个输出参数所对应的结构体信息以及每个结构体的所有字段信息;
第二模块,用于根据所述元数据信息,判断所述待转换json字符串数据中的每一字段能否在所述元数据信息中查找到;
第三模块,用于对于任一字段,若所述任一字段能在所述元数据信息中查找到,从所述元数据信息中获取所述任一字段和所述任一字段的类型信息;
第四模块,用于将所述任一字段的名称、所述任一字段的值和所述任一字段的类型信息写入到目标thrift二进制流中。
第三方面,本发明实施例提供一种电子设备,包括:
至少一个处理器、至少一个存储器、通信接口和总线;其中,
所述处理器、存储器、通信接口通过所述总线完成相互间的通信;
所述通信接口用于该测试设备与显示装置的通信设备之间的信息传输;
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行第一方面提供的将json字符串转化为thrift二进制流的方法。
第四方面,本发明实施例提供一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行第一方面提供的将json字符串转化为thrift二进制流的方法。
本发明实施例提供的一种将json字符串转化为thrift二进制流的方法及系统,服务元数据解决了api网关对服务api包的强依赖问题,同时在流式处理json的过程中能校验每个字段以及结构体的类型,实现快速失败,以避免无效请求发送到服务端。
本发明实施例提出的基于string-stream的流式处理机制,不需要在内存中构建好整个json对象再做处理,它对内存的消耗取决于json结构的深度而不是长度。例如某个json结构体包含一个数组,那么流式处理机制处理该json所需要的最大内存等于单个数组元素的大小,而数组的长度对于内存消耗来说没有影响。因此,本发明实施例提供的方法可以减小内存的消耗。
这个特性很重要,就算要处理几兆字节或者几十兆字节甚至几百兆字节的json数据,本发明实施例提供的流式处理机制也只是需要几千字节的内存消耗而已。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种将json字符串转化为thrift二进制流的方法的流程图;
图2为本发明实施例提供的一种将json字符串转化为thrift二进制流的系统的结构示意图;
图3示例了一种电子设备的实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的一种将json字符串转化为thrift二进制流的方法的流程图,如图1所示,该方法包括:
S1,输入待转换json字符串数据和对应服务结构体元数据信息,所述元数据包括微服务的所有接口方法、每个方法的输入参数和输出参数、每个输入参数所对应的结构体信息、每个输出参数所对应的结构体信息以及每个结构体的所有字段信息;
S2,根据所述元数据信息,判断所述待转换json字符串数据中的每一字段能否在所述元数据信息中查找到;
S3,对于任一字段,若所述任一字段能在所述元数据信息中查找到,从所述元数据信息中获取所述任一字段和所述任一字段的类型信息;
S4,将所述任一字段的名称、所述任一字段的值和所述任一字段的类型信息写入到目标thrift二进制流中。
需要说明的是,服务接口文档生成方法及装置、服务接口在线测试工具生成方法及装置均是基于对元数据文件的解析,而元数据文件是通过对服务接口文件编译得到的。
元数据是关于数据的数据或者叫做用来描述数据的数据或者叫做信息的信息,是信息共享和交换的基础和前提,用于描述数据集的内容、质量、表示方式、空间参考、管理方式以及数据集的其他特征。元数据具有以下特点:
1、元数据是关于数据的结构化的数据,它不一定是数字形式的,可来自不同的资源;
2、元数据是与对象相关的数据,此数据使其潜在的用户不必先具备对这些对象的存在和特征的完整认识;
3、元数据是对信息包裹的编码的描述;
4、元数据包含用于描述信息对象的内容和位置的数据元素集,促进了网络环境中信息对象的发现和检索;
5、元数据不仅对信息对象进行描述,还能够描述资源的使用环境、管理、加工、保存和使用等方面的情况;
6、在信息对象或系统的生命周期中自然增加元数据;
7、元数据常规定义中的“数据”是表示事务性质的符号,是进行各种统计、计算、科学研究、技术设计所依据的数值,或是说数字化、公式化、代码化、图表化的信息。
在软件构造领域,元数据被定义为在程序中不是被加工的对象,而是通过其值的改变来改变程序的行为的数据。它在运行过程中起着以解释方式控制程序行为的作用。在程序的不同位置配置不同值的元数据,就可以得到与原来等价的程序行为。
本发明实施例需要获得微服务框架能提供服务的元数据信息。通过解析接口的IDL文件,可以获得服务丰富的元数据信息,包括服务的所有接口方法、每个方法的输入输出参数、服务接口的所有结构体信息以及每个结构体的所有字段信息。通过元数据信息,可以动态的实现任意协议格式转换成为原生thrift二进制格式的能力。
首先,待转换数据的类型为json字符串,目标thrift二进制流中为thrift协议的二进制流,需要将待转换数据转换为目标thrift二进制流,根据微服务框架提供的元数据信息和待转换数据,判断每个字段中是否存在于判断在元数据中,以其中任意一个字段为例进行说明,如果该字段能够在元数据中查找到,就将该字段的名称、值和该字段的类型信息写入到目标thrift二进制流中。
在上述实施例的基础上,优选地,还包括:若判断获知所述任一字段对应的结构体有必填的字段缺失,实现快速失败。
如果判断得到该字段对应的结构体存在必填的字段缺少,可以实现快速失败,不用再继续转换,从而提高整个转换的效率。
在上述实施例的基础上,优选地,还包括:
若所述任一字段不能在所述元数据信息中查找到,忽略所述任一字段,判断所述任一字段的下一个字段是否存能在所述元数据信息中查找到。
具体地,如果不能在元数据信息中查找到该字段,则忽略所述任一字段,判断该字段的下一字段是否能在元数据信息中查找到。
在上述实施例的基础上,优选地,所述将所述任一字段的名称、所述任一字段的值和所述任一字段的类型信息写入到目标thrift二进制流中,且维护一个栈结构用于解决json结构体嵌套的问题,具体包括:
若所述待转换数据的数据类型为结构体,当前栈顶为STRUCT或Map时,把所述待转换数据的结构体名称和数据类型写入所述目标thrift二进制流。
具体地,针对不同类型的待转换数据,具体将该待转换数据转换为目标thrift二进制流的方法也不一样。
如果待转换数据的类型为结构体,将该待转换数据转换为目标thrift二进制流的具体方法为:
(1)事件开始:当前栈顶为STRUCT/Map,把结构体名以及数据类型写入目标thrift二进制流。
(2)事件结束:当前栈顶为STRUCT/Map,写入结束符到目标thrift二进制流,对于STRUCT类型,还会校验结构体的完整性以确保所有必填字段已经存在。
在上述实施例的基础上,优选地,所述将所述任一字段的名称和所述任一字段的类型信息写入到目标thrift二进制流中,进一步包括:
若所述待转换数据的数据类型为数组,当前栈顶为LIST或SET时,把所述待转换数据的数组元素类型以及数组长度写入所述目标thrift二进制流。
如果待转换数据的类型为数组,对该待转换数据的具体转换方法为:
(1)事件开始:当前栈顶为LIST/SET,把数组元素类型以及数组长度(在处理完数组前无法获知长度值,暂时用0替代)写入目标thrift二进制流。
(2)事件结束:当前栈顶为LIST/SET,把结束符写入目标thrift二进制流并重置数组长度。
在上述实施例的基础上,优选地,所述将所述任一字段的名称、值和所述任一字段的类型信息写入到目标thrift二进制流中,进一步包括:
若所述待转换数据的数据类型为普通字段,当前栈顶为MAP,把所述任一字段以字符串或者数字的方式写入所述目标thrift二进制流,普通字段包括字符串、数字和布尔值三种类型,写入任一字段的字符串还是任一字段的数字,可以根据该任意字段元数据信息的字段类型来确定。
当待转换数据的数据类型为普通字段时,对该待转换数据进行转换的步骤如下:
处理字段,涉及到NodeInfo的出入栈操作,NodeInfo的出入栈操作如下:
对json中的每一个值(包括结构体、数组、字符串、数字、布尔值),都会有一个对应的NodeInfo,这个随着json的事件流,不断的新建,然后当json值处理完成后,NodeInfo又会销毁。
NodeInfo中包括了如下信息:
DataType当前value对应的元数据类型。
tFieldPos对应与{name:null}这样的field,当检测到value是一个null值时,我们需要将二进制数据流回滚到tFieldPos,即消除在流中的field头部信息。这个检测在onEndField时进行。对于LIST/SET这是不容许子元素有null值的。
valuePos如果value时一个MAP/LIST/SET,在value的开始部分会是这个集合的长度,在onEndObject/onEndArray时,我们会回到valuePos,重写集合的长度。
elCount如果parent是MAP/LIST/SET,对非null值(onStartObject,onStartArray,onString,onNumber,onBoolean)都会新增parent.elCount。然后在parent结束后重置长度。
isNullonNull会设置当前的isNull为true,在onEndField时,进行tFieldPos的特殊处理。
对于二进制的处理如下:
(1)事件开始:如果当前栈顶为STRUCT/MAP:
如果是STRUCT,那么把字段名以及字段类型写入目标thrift二进制流。
如果是MAP,那么根据字段类型直接把字段以字符串或者数字的方式写入目标thrift二进制流(仅支持字符串或者数字作为MAP的key)。
(2)事件结束:根据出入栈规则出栈,并把字段结束符写入二进制流即可。
在上述实施例的基础上,优选地,所述将所述任一字段的名称、所述任一字段的值和所述任一字段的类型信息写入到目标thrift二进制流中,进一步包括:
若所述待转换数据的数据类型为数字,当前栈顶为BYTE、SHORT、INTEGER、LONG和DOUBLE中的一种时,根据所述元数据的字段类型,把待转换数据的值写入到所述目标thrift二进制流;
若所述待转换数据的数据类型为布尔值,当前栈顶为BOOLEAN,把所述待转换数据的布尔值写入所述目标thrift二进制流;
若所述待转换数据的数据类型为字符串,当前栈顶为STRING,把所述待转换数据的字符串值写入所述目标thrift二进制流。
具体地,处理数字:当前栈顶为BYTE、SHORT、INTEGER、LONG和DOUBLE中的一种,根据元数据的字段类型,把对应的数字写入到目标thrift二进制流。
处理布尔值:当前栈顶为BOOLEAN,把布尔值写入目标thrift二进制流。
处理字符串:当前栈顶为STRING,把字符串值写入目标thrift二进制流。
本发明实施例提供的一种将json字符串转化为thrift二进制流的方法,服务元数据解决了api网关对服务api包的强依赖问题,同时在流式处理json的过程中能校验每个字段以及结构体的类型,实现快速失败,以避免无效请求发送到服务端。
本发明实施例提出的基于string-stream的流式处理机制,不需要在内存中构建好整个json对象再做处理,它对内存的消耗取决于json结构的深度而不是长度。例如某个json结构体包含一个数组,那么流式处理机制处理该json所需要的最大内存等于单个数组元素的大小,而数组的长度对于内存消耗来说没有影响。因此,本发明实施例提供的方法可以减小内存的消耗。
这个特性很重要,就算要处理几兆字节或者几十兆字节甚至几百兆字节的json数据,本发明实施例提供的流式处理机制也只是需要几千字节的内存消耗而已。
图2为本发明实施例提供的一种将json字符串转化为thrift二进制流的系统的结构示意图,如图2所示,该系统包括第一模块201、第二模块202、第三模块203和第四模块204,其中:
第一模块201用于输入待转换json字符串数据和对应服务结构体元数据信息,所述元数据包括微服务的所有接口方法、每个方法的输入参数和输出参数、每个输入参数所对应的结构体信息、每个输出参数所对应的结构体信息以及每个结构体的所有字段信息;
第二模块202用于根据所述元数据信息,判断所述待转换json字符串数据中的每一字段能否在所述元数据信息中查找到;
第三模块203用于对于任一字段,若所述任一字段能在所述元数据信息中查找到,从所述元数据信息中获取所述任一字段和所述任一字段的类型信息;
第四模块204用于将所述任一字段的名称、所述任一字段的值和所述任一字段的类型信息写入到目标thrift二进制流中。
本系统实施例的具体执行过程与上述方法实施例的具体执行过程相同,详情请参考上述方法实施例,本系统实施例在此不再赘述。
图3示例了一种电子设备的实体结构示意图,如图3所示,该服务器可以包括:处理器(processor)310、通信接口(Communicat ions Interface)320、存储器(memory)330和总线340,其中,处理器310,通信接口320,存储器330通过总线340完成相互间的通信。通信接口340可以用于服务器与智能电视之间的信息传输。处理器310可以调用存储器330中的逻辑指令,以执行如下方法:
输入待转换json字符串数据和对应服务结构体元数据信息,所述元数据包括微服务的所有接口方法、每个方法的输入参数和输出参数、每个输入参数所对应的结构体信息、每个输出参数所对应的结构体信息以及每个结构体的所有字段信息;
根据所述元数据信息,判断所述待转换json字符串数据中的每一字段能否在所述元数据信息中查找到;
对于任一字段,若所述任一字段能在所述元数据信息中查找到,从所述元数据信息中获取所述任一字段和所述任一字段的类型信息;
将所述任一字段的名称、所述任一字段的值和所述任一字段的类型信息写入到目标thrift二进制流中。
此外,上述的存储器330中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:
输入待转换json字符串数据和对应服务结构体元数据信息,所述元数据包括微服务的所有接口方法、每个方法的输入参数和输出参数、每个输入参数所对应的结构体信息、每个输出参数所对应的结构体信息以及每个结构体的所有字段信息;
根据所述元数据信息,判断所述待转换json字符串数据中的每一字段能否在所述元数据信息中查找到;
对于任一字段,若所述任一字段能在所述元数据信息中查找到,从所述元数据信息中获取所述任一字段和所述任一字段的类型信息;
将所述任一字段的名称、所述任一字段的值和所述任一字段的类型信息写入到目标thrift二进制流中。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种将json字符串转化为thrift二进制流的方法,其特征在于,包括:
输入待转换json字符串数据和对应服务结构体元数据信息,所述元数据包括微服务的所有接口方法、每个方法的输入参数和输出参数、每个输入参数所对应的结构体信息、每个输出参数所对应的结构体信息以及每个结构体的所有字段信息;
根据所述元数据信息,判断所述待转换json字符串数据中的每一字段能否在所述元数据信息中查找到;
对于任一字段,若所述任一字段能在所述元数据信息中查找到,从所述元数据信息中获取所述任一字段和所述任一字段的类型信息;
将所述任一字段的名称、所述任一字段的值和所述任一字段的类型信息写入到目标thrift二进制流中;
其中,所述元数据通过对服务接口文件编译得到。
2.根据权利要求1所述方法,其特征在于,还包括:
若判断获知所述任一字段对应的结构体有必填的字段缺失,实现快速失败。
3.根据权利要求1所述方法,其特征在于,还包括:
若所述任一字段不能在所述元数据信息中查找到,忽略所述任一字段,判断所述任一字段的下一个字段是否能在所述元数据信息中查找到。
4.根据权利要求1所述方法,其特征在于,所述将所述任一字段的名称、所述任一字段的值和所述任一字段的类型信息写入到目标thrift二进制流中,具体包括:
若所述任一字段的数据类型为结构体,当前栈顶为STRUCT或Map时,把所述任一字段的结构体名称和数据类型写入所述目标thrift二进制流。
5.根据权利要求1所述方法,其特征在于,所述将所述任一字段的名称、所述任一字段的值和所述任一字段的类型信息写入到目标thrift二进制流中,进一步包括:
若所述任一字段的数据类型为数组,当前栈顶为LIST或SET时,把所述任一字段的数组元素类型以及数组长度写入所述目标thrift二进制流。
6.根据权利要求1所述方法,其特征在于,所述将所述任一字段的名称、所述任一字段的值和所述任一字段的类型信息写入到目标thrift二进制流中,进一步包括:
若所述任一字段的数据类型为普通字段,当前栈顶为MAP,把所述任一字段以字符串或者数字的方式写入所述目标thrift二进制流,所述普通字段包括字符串、数字和布尔值。
7.根据权利要求1所述方法,其特征在于,所述将所述任一字段的名称、所述任一字段的值和所述任一字段的类型信息写入到目标thrift二进制流中,进一步包括:
若所述任一字段的数据类型为数字,当前栈顶为BYTE、SHORT、INTEGER、LONG和DOUBLE中的一种时,根据所述元数据的字段类型,把所述任一字段的值写入到所述目标thrift二进制流;
若所述任一字段的数据类型为布尔值,当前栈顶为BOOLEAN,把所述任一字段的布尔值写入所述目标thrift二进制流;
若所述任一字段的数据类型为字符串,当前栈顶为STRING,把所述任一字段的字符串值写入所述目标thrift二进制流。
8.一种将json字符串转化为thrift二进制流的系统,其特征在于,包括:
第一模块,用于输入待转换json字符串数据和对应服务结构体元数据信息,所述元数据包括微服务的所有接口方法、每个方法的输入参数和输出参数、每个输入参数所对应的结构体信息、每个输出参数所对应的结构体信息以及每个结构体的所有字段信息;
第二模块,用于根据所述元数据信息,判断所述待转换json字符串数据中的每一字段能否在所述元数据信息中查找到;
第三模块,用于对于任一字段,若所述任一字段能在所述元数据信息中查找到,从所述元数据信息中获取所述任一字段和所述任一字段的类型信息;
第四模块,用于将所述任一字段的名称、所述任一字段的值和所述任一字段的类型信息写入到目标thrift二进制流中;
其中,所述元数据通过对服务接口文件编译得到。
9.一种电子设备,其特征在于,包括:
至少一个处理器、至少一个存储器、通信接口和总线;其中,
所述处理器、存储器、通信接口通过所述总线完成相互间的通信;
所述通信接口用于测试设备与显示装置的通信设备之间的信息传输;
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1-7中任一项所述的方法。
10.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1至7任一所述的方法。
CN201910132387.9A 2019-02-22 2019-02-22 一种将json字符串转化为thrift二进制流的方法及系统 Active CN109902274B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910132387.9A CN109902274B (zh) 2019-02-22 2019-02-22 一种将json字符串转化为thrift二进制流的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910132387.9A CN109902274B (zh) 2019-02-22 2019-02-22 一种将json字符串转化为thrift二进制流的方法及系统

Publications (2)

Publication Number Publication Date
CN109902274A CN109902274A (zh) 2019-06-18
CN109902274B true CN109902274B (zh) 2023-05-30

Family

ID=66945258

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910132387.9A Active CN109902274B (zh) 2019-02-22 2019-02-22 一种将json字符串转化为thrift二进制流的方法及系统

Country Status (1)

Country Link
CN (1) CN109902274B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110377463A (zh) * 2019-06-19 2019-10-25 深圳壹账通智能科技有限公司 接口测试方法、装置、终端及计算机可读存储介质
CN112307012A (zh) * 2019-07-30 2021-02-02 中科云谷科技有限公司 海量工业数据存储和读取方法
CN111031378B (zh) * 2019-12-20 2022-04-05 山东浪潮超高清视频产业有限公司 一种视频打点和记录epg信息的方法
CN111475558B (zh) * 2020-04-07 2024-02-23 中汇信息技术(上海)有限公司 一种数据转换方法、装置、存储介质和电子设备
CN111600909B (zh) * 2020-06-24 2023-06-23 腾讯科技(深圳)有限公司 数据处理方法、装置、协议转换设备及存储介质
CN112039990B (zh) * 2020-08-31 2023-03-24 广州品唯软件有限公司 数据钻取方法、代理服务器、服务调用系统及介质
CN112039989B (zh) * 2020-08-31 2023-02-21 广州品唯软件有限公司 数据钻取方法、代理服务器、服务调用系统及介质
CN112291041B (zh) * 2020-10-22 2022-05-27 山东云海国创云计算装备产业创新中心有限公司 一种基于fpga的数据解码装置、方法
CN113297296B (zh) * 2021-05-31 2022-08-16 西南大学 多样式类型数据的json化处理方法
CN113282776B (zh) * 2021-07-12 2021-10-01 北京蔚领时代科技有限公司 用于图形引擎资源文件压缩的数据处理系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105068854B (zh) * 2015-08-07 2018-04-06 杭州古北电子科技有限公司 一种使用相同规则实现对不同产品的控制的方法
CN106775696A (zh) * 2016-12-08 2017-05-31 蓝信工场(北京)科技有限公司 数据处理方法及装置
CN106919509B (zh) * 2017-03-09 2020-11-24 腾讯科技(深圳)有限公司 一种客户端生成方法、装置及电子设备
CN107835178B (zh) * 2017-11-13 2020-10-30 北京奇艺世纪科技有限公司 一种多协议服务通信方法、装置以及电子设备
CN108038796B (zh) * 2017-12-11 2021-02-26 厦门亿力吉奥信息科技有限公司 基于c++的gis服务运行方法、存储介质

Also Published As

Publication number Publication date
CN109902274A (zh) 2019-06-18

Similar Documents

Publication Publication Date Title
CN109902274B (zh) 一种将json字符串转化为thrift二进制流的方法及系统
US8583704B2 (en) Systems and methods for efficient data transfer
US9369406B2 (en) Resource server providing a rapidly changing resource
US8344916B2 (en) System and method for simplifying transmission in parallel computing system
US9300764B2 (en) High efficiency binary encoding
CN102185901B (zh) 一种客户端报文转换方法
JP5236581B2 (ja) 送信装置、その制御方法、プログラム及び情報処理システム
US8120515B2 (en) Knowledge based encoding of data with multiplexing to facilitate compression
CN105359155B (zh) 使用压缩破坏口令攻击
CN103747097A (zh) 移动终端http请求聚合压缩的系统及方法
KR20080101913A (ko) Edi 거래 변환 방법, 시스템, 및 컴퓨터 판독가능 매체
US10360198B2 (en) Systems and methods for processing binary mainframe data files in a big data environment
US11381630B2 (en) Transmitting data over a network in representational state transfer (REST) applications
CN112883088B (zh) 一种数据处理方法、装置、设备及存储介质
Srinivas et al. Storage Optimization Using File Compression Techniques for Big Data.
CN105389355B (zh) 数据处理方法和终端
CN107835158B (zh) Sna网络体系下交互数据的传输方法及装置
WO2020236360A1 (en) Remote operations application programming interface
US11537625B1 (en) Using structured data templates and invocation statements to dynamically define values for efficient data encoding
CN117082124B (zh) 数据传送方法、装置、设备、介质及产品
CN112230983B (zh) 信息处理方法、电子设备和介质
CN112286503B (zh) 多注册中心的微服务统一管理方法、装置、设备及介质
CN116962319A (zh) 一种调用方法、装置、网络设备及可读存储介质
Lee et al. General-purpose sensor message parser using recurrent neural networks with stack memory
US11212528B2 (en) Bit string block encoder device, block decoder device, information processing device, program, block encoding method and block decoding method

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