本发明涉及互联网通讯领域,特别涉及一种报文格式转换方法和系统。
背景技术:
json是一种轻量级数据交换格式,很容易为人读写且易于机器解析和生成,它完全独立于语言,近几年越来越受开发者的青睐,随着rest风格的流行,越来越多的api接口都开始采用json作为其参数格式。目前有http请求使用key=value格式,但在服务端api的参数格式是json,因此每次进行数据交换时都需要将key=value格式转换为json格式,工作量大且效率较低。
技术实现要素:
本发明提供了一种报文格式转换方法和系统,解决了以上所述的技术问题。
本发明解决上述技术问题的技术方案如下:
依据本发明的一个方面,提供了一种报文格式转换方法,包括以下步骤:
步骤1,获取http请求数据,所述http请求数据包括至少一个参数名和所述参数名对应的参数值;
步骤2,获取与所述http请求数据对应的json配置模板,所述json配置模板包括所述参数名;
步骤3,对所述http请求数据进行解析,提取http请求数据中所有的参数名和对应的参数值;
步骤4,将所述参数值填写到所述json配置模板的对应位置,生成json格式的请求数据。
本发明的有益效果是:本发明的报文格式转换方法通过预先建立的json配置模版,自动将http请求数据转换为json格式的请求数据,不仅无需人工参与,转换速度快,转换效率高,而且可以根据用户需要对json配置模版的参数个数和参数名实现动态配置。
在上述技术方案的基础上,本发明还可以做如下改进。
进一步,步骤1中所述http请求数据为key=value格式的请求数据;步骤2中所述json配置模板还包括与所述参数名对应的预设字符串,所述预设字符串为对所述参数名采用预设格式变换后生成的字符串。
进一步,所述步骤3具体包括:
步骤301,根据所述http请求数据生成map<string,object>对象,将http请求数据中的参数名作为map对象的键,对应的参数值作为所述键对应的键值,所述键和键值形成键值对,其中map对象中的键为string类型,键值为object类型;
步骤302,遍历map对象中的所有键值对,根据键值对中的键生成变量名,根据键值生成变量名对应的变量值,所述变量名和所述变量值形成对应关系表,所述变量名与json配置模板中参数名对应的预设字符串一致。
进一步,所述步骤4具体包括:
s401,将所述json配置模板作为原始串,获取原始串中的预设字符串,并查询所述对应关系表,获得与所述预设字符串一致的变量名以及所述变量名对应的变量值;
s402,利用string的replaceall方法,将所述预设字符串替换为对应的变量值,并生成json格式的请求数据。
采用上述进一步方案的有益效果是:本进一步技术方案中,通过map<string,object>方法和string的replaceall方法,可以自动将json配置模板中的预设字符串替换为对应的变量值,不仅转换速度快,转换效率高,而且代码编写简单。
进一步,所述步骤401中,若在所述对应关系表中查询不到与所述预设字符串一致的变量名,则步骤402中,将所述预设字符串置为空。
采用上述进一步方案的有益效果是:本进一步技术方案中,将没有匹配到变量名的预设字符串置为空,不仅符合json的数据格式,而且利于后续步骤进行数据调用。
依据本发明的另一方面,还提供了一种报文格式转换系统,包括第一获取模块、第二获取模块、解析模块和生成模块,
所述第一获取模块,用于获取http请求数据,所述http请求数据包括至少一个参数名和所述参数名对应的参数值;
所述第二获取模块,用于获取与所述http请求数据对应的json配置模板,所述json配置模板包括所述参数名;
所述解析模块,用于对所述http请求数据进行解析,提取http请求数据中所有的参数名和对应的参数值;
所述生成模块,用于将所述参数值填写到所述json配置模板的对应位置,生成json格式的请求数据。
本发明的有益效果是:本发明的报文格式转换系统通过预先建立的json配置模版,自动将http请求数据转换为json格式的请求数据,不仅无需人工参与,转换速度快,转换效率高,而且可以根据用户需要对json配置模版的参数个数和参数名实现动态配置。
进一步,所述http请求数据为key=value格式的请求数据;所述json配置模板包括参数名和参数名对应的预设字符串,所述预设字符串为对所述参数名采用预设格式变换后生成的字符串。
进一步,所述解析模块包括:
第一解析单元,用于根据所述http请求数据生成map<string,object>对象,将http请求数据中的参数名作为map对象的键,对应的参数值作为所述键对应的键值,所述键和键值形成键值对,其中map对象中的键为string类型,键值为object类型;
第二解析单元,用于遍历map对象中的所有键值对,根据键值对中的键生成变量名,根据键值生成变量名对应的变量值,所述变量名和所述变量值形成对应关系表,所述变量名与json配置模板中参数名对应的预设字符串一致。
进一步,所述生成模块具体用于将所述json配置模板作为原始串,找到原始串中的预设字符串,并查询所述对应关系表,获得与所述预设字符串一致的变量名以及所述变量名对应的变量值;并利用string的replaceall方法,将所述预设字符串替换为对应的变量值,并生成json格式的请求数据。
采用上述进一步方案的有益效果是:本进一步技术方案中,通过map<string,object>方法和string的replaceall方法,可以自动将json配置模板中的预设字符串替换为对应的变量值,不仅转换速度快,转换效率高,而且代码编写简单。
进一步,所述生成模块还用于若在所述对应关系表中查询不到与所述预设字符串一致的变量名,则将所述预设字符串置为空。
采用上述进一步方案的有益效果是:本进一步技术方案中,所述生成模块将没有匹配到变量名的预设字符串置为空,不仅符合json的数据格式,而且利于后续步骤进行数据调用。
附图说明
图1为本发明一实施例提供的报文格式转换方法的流程示意图;
图2为本发明另一实施例提供的报文格式转换系统的结构示意图;
图3为本发明另一实施例提供的报文格式转换系统的结构示意图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
图1为本发明一实施例提供的报文格式转换方法的流程示意图,如图1所示,所述报文格式转换方法包括以下步骤:
步骤1,获取http请求数据,所述http请求数据包括至少一个参数名和所述参数名对应的参数值;
步骤2,获取与所述http请求数据对应的json配置模板,所述json配置模板包括所述参数名;
步骤3,对所述http请求数据进行解析,提取http请求数据中所有的参数名和对应的参数值;
步骤4,将所述参数值填写到所述json配置模板的对应位置,生成json格式的请求数据。
本实施例的报文格式转换方法通过预先建立的json配置模版,自动将http请求数据转换为json格式的请求数据,不仅无需人工参与,转换速度快,转换效率高,而且可以根据用户需要对json配置模版的参数个数和参数名实现动态配置。
作为本发明的一个优选实施例,步骤1中所述http请求数据为key=value格式的请求数据;步骤2中所述json配置模板还包括与所述参数名对应的预设字符串,所述预设字符串为对所述参数名采用预设格式变换后生成的字符串。该实施例中,所述步骤3具体包括:
步骤301,根据所述http请求数据生成map<string,object>对象,将http请求数据中的参数名作为map对象的键,对应的参数值作为所述键对应的键值,所述键和键值形成键值对,其中map对象中的键为string类型,键值为object类型;
步骤302,遍历map对象中的所有键值对,根据键值对中的键生成变量名,根据键值生成变量名对应的变量值,所述变量名和所述变量值形成对应关系表,所述变量名与json配置模板中参数名对应的预设字符串一致。
上述优选实施例中,所述步骤4具体包括:
s401,将所述json配置模板作为原始串,获取原始串中的预设字符串,并查询所述对应关系表,获得与所述预设字符串一致的变量名以及所述变量名对应的变量值;
s402,利用string的replaceall方法,将所述预设字符串替换为对应的变量值,并生成json格式的请求数据。
上述优选实施例通过map<string,object>方法和string的replaceall方法,可以自动将json配置模板中的预设字符串替换为对应的变量值,不仅转换速度快,转换效率高,而且代码编写简单。
以下通过一个具体实施例,对上述过程进行描述。在该具体实施例中,可以通过图形化界面显示每个步骤的进程,因此操作更加简单。
步骤1中,获取的http请求数据的地址为:
http://ip:port/path/method
channel_id=119&route_key=name&route_value=200&login_no=10102,
上述http请求数据中包含四个参数名,分别为channel_id、route_key、route_value和login_no,对应的参数值分别为119、name、200和10102。
步骤2中,对应的json配置模板为:
上述json配置模板中,包括五个参数名,分别为channel_id、route_key、route_value、login_no、login_ip,对应的预设字符串分别为:${channel_id}、${route_key}、${route_value}、${login_no}、${login_ip},即使用${参数名}的格式形成对应的预设字符串。
步骤3,根据所述http请求数据生成map<string,object>对象,具体为:
map<stirng,object>
{channel_id=119,route_key=name,route_value=200,login_no=10102};
然后遍历map对象中的所有键值对,形成以下对应关系表:
(1)变量名=${channel_id},变量值=119
(2)变量名=${route_key},变量值=name
(3)变量名=${route_value},变量值=200
(4)变量名=${login_no},变量值=10102。
步骤4,通过将json配置模板中的${参数名}与变量名相匹配,从而将json模板中对应的预设字符串替换为变量值,若json配置模板中的${参数名}没有匹配到变量名,则将所述预设字符串置为空,从而得到以下json格式的请求数据:
图2为本发明另一实施例提供的报文格式转换系统的结构示意图,如图2所示,所述报文格式转换系统包括第一获取模块、第二获取模块、解析模块和生成模块,
所述第一获取模块,用于获取http请求数据,所述http请求数据包括至少一个参数名和所述参数名对应的参数值;
所述第二获取模块,用于获取与所述http请求数据对应的json配置模板,所述json配置模板包括所述参数名;
所述解析模块,用于对所述http请求数据进行解析,提取http请求数据中所有的参数名和对应的参数值;
所述生成模块,用于将所述参数值填写到所述json配置模板的对应位置,生成json格式的请求数据。
本实施例的报文格式转换系统通过预先建立的json配置模版,自动将http请求数据转换为json格式的请求数据,不仅无需人工参与,转换速度快,转换效率高,而且可以根据用户需要对json配置模版的参数个数和参数名实现动态配置。
作为本发明的优选实施例中,所述http请求数据为key=value格式的请求数据;所述json配置模板还包括与所述参数名对应的预设字符串,所述预设字符串为对所述参数名采用预设格式变换后生成的字符串。该优选实施例中,所述解析模块包括第一解析单元和第二解析单元,如图3所示,
第一解析单元,用于根据所述http请求数据生成map<string,object>对象,将http请求数据中的参数名作为map对象的键,对应的参数值作为所述键对应的键值,所述键和键值形成键值对,其中map对象中的键为string类型,键值为object类型;
第二解析单元,用于遍历map对象中的所有键值对,根据键值对中的键生成变量名,根据键值生成变量名对应的变量值,所述变量名和所述变量值形成对应关系表,所述变量名与json配置模板中参数名对应的预设字符串一致。该优选实施例中,所述生成模块具体用于将所述json配置模板作为原始串,找到原始串中的预设字符串,并查询所述对应关系表,获得与所述预设字符串一致的变量名以及所述变量名对应的变量值;并利用string的replaceall方法,将所述预设字符串替换为对应的变量值,并生成json格式的请求数据。所述优选实施例通过map<string,object>方法和string的replaceall方法,可以自动将json配置模板中的预设字符串替换为对应的变量值,不仅转换速度快,转换效率高,而且代码编写简单。
在另一优选实施例中,所述生成模块还用于若在所述对应关系表中查询不到与所述预设字符串一致的变量名,则将所述预设字符串置为空。该实施例中,所述生成模块将没有匹配到变量名的预设字符串置为空,不仅符合json的数据格式,而且利于后续步骤进行数据调用。
在本发明的描述中,需要理解的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。