字符串与时间字段的转换方法及装置制造方法及图纸

技术编号:31848735 阅读:15 留言:0更新日期:2022-01-12 13:30
本申请实施例提供的字符串与时间字段的转换方法及装置,涉及数据处理领域。首先,拦截请求报文,从请求报文中获取目标实现方法的参数信息列表;接着,通过遍历参数信息列表的方式查看列表中的参数是否包含预设注解标记,并在参数存在预设注解标记时进行时间格式转换;最后,基于参数对应的参数类型及转换后的时间格式,更新参数。上述方案通过标注预设注解标记可以精确匹配那些字段需要进行格式容错,缩小检测和执行转换的字段范围,提升效率。进一步地,在系统交互场景下,提供对时间类型字段的格式容错能力,可以降低业务出错或阻塞的可能性,如此还可以提升系统之间对于该类型字段转换编码工作的工作效率。转换编码工作的工作效率。转换编码工作的工作效率。

【技术实现步骤摘要】
字符串与时间字段的转换方法及装置


[0001]本申请涉及数据处理
,具体而言,涉及一种字符串与时间字段的转换方法及装置。

技术介绍

[0002]在软件系统开发过程中,数据对象中时间类型字段类型比较特殊,由于不同系统(团队规范/开发语言)差异对于该类型字段的存储形态有如下可能性:时间戳格式存储(13位或10位);时间字符串格式存储(时间字符串可能多种如yyyy/MM/dd、yyyy

MM

dd、yyyy

MM

dd HH:mm:ss、MM/dd/yyyy等不同间隔符或不同的排列顺序)。
[0003]在系统交互过程中,涉及网络传输,需要将传输数据序列化(即数据从存储形态转换成传输形态)处理,又由于系统间存在开发语言、技术框架、序列化工具的差异,如果传输时不做特殊的编码处理,将会执行默认的序列化方法,则时间类型字段存在以下可能的形态:时间戳文本传输(13位或10位;时间字符串文本传输(日期格式化串可能多种如yyyy/MM/dd、yyyy

MM

dd、yyyy

MM

dd HH:mm:ss、MM/dd/yyyy等不同间隔符或不同的排列顺序)。
[0004]应用程序接口(Application Programming Interface,API)提供方而言通常使用一些框架(比如,Spring)进行自动反序列化减少开发工作量,而反序列化成功的前提是,调用方传输的字段必须是应用程序接口提供方反序列化支持的日期格式化串(如:yyyy

MM

dd HH:mm:ss)。否则将造成:1)该字段反序列失败: 日期字段用空值参与运算造成误差或程序异常;2)该字段反序列失败: 应用程序接口直接反馈失败报文,告知调用方参数错误。
[0005]所以在日常开发中如果应用程序接口提供方暴露的入参有定性时间类型参数,且该字段要参与业务运算,面对如上所述众多的复杂场景,必须依赖同上游定义好统一日期格式化串,对于日期类型字段的改动必须有完善测试案例覆盖,否则一旦复现必须依赖一方或多方系统紧急修复软件版本。
[0006]如果应用程序接口提供方的是通用型接口(全局只开放一个接口、所有业务参数没有固定的字段存储,只将调用者的所有业务参数最终都反序列化在一个JSON对象字段中;系统用户可以完全在Web页面自定义业务参数、将业务参数定义计算规则,在真正参与业务计算时才根据用户配置的参数名/路径在JSON对象中获取值,根据配置的字段类型进行转换),此类设计虽然提高了系统功能的灵活可用性(添加新的业务/参数/规则无需修复软件版本),但在无形中放大了数据格式不统一导致反序列化失败的风险。

技术实现思路

[0007]为了至少克服现有技术中的上述不足,本申请的目的在于提供一种字符串与时间字段的转换方法及装置,用于解决上述技术问题。
[0008]第一方面,本申请实施例提供一种字符串与时间字段的转换方法,所述方法包括:通过应用程序编程接口拦截执行目标方法的请求报文,从所述请求报文中获取用于实现所述目标方法的类及对应的目标实现方法;
获取所述目标实现方法的参数信息列表;通过索引遍历所述参数信息列表,并判断当前索引下的所述参数信息列表中的参数是否包含预设注解标记;在当前索引下的所述参数信息列表中的目标参数包含预设注解标记时,判断所述目标参数的字符串格式;根据所述目标参数的字符串格式,对所述目标参数进行时间格式转换;基于所述目标参数对应的参数类型及转换后的时间格式,更新所述目标参数。
[0009]在上述方案中,通过标注预设注解标记可以精确匹配那些字段需要进行格式容错,缩小检测和执行转换的字段范围,提升效率。进一步地,在系统交互场景下,提供对时间类型字段的格式容错能力,可以降低业务出错或阻塞的可能性,如此还可以提升系统之间对于该类型字段转换编码工作的工作效率。
[0010]在一种可能的实现方式中,所述根据所述目标参数的字符串格式,对所述目标参数进行时间格式转换的步骤,包括:若所述目标参数的字符串格式中的属性值为预设位数的纯数字,则采用时间戳的反序列化方式实现对所述目标参数进行时间格式转换;若所述目标参数的字符串格式通过正则表达式,符合预设的统一表达格式,则直接将目标参数的字符串格式作为时间格式转换的时间格式;若所述目标参数的字符串格式为其他字符串格式,则按照预设的时间格式转换规则对所述目标参数进行时间格式转换。
[0011]在一种可能的实现方式中,所述若所述目标参数的字符串格式为其他字符串格式,则按照预设的时间格式转换规则对所述目标参数进行时间格式转换的步骤,包括:通过正则表达式从所述目标参数的字符串格式中提取出字符之间的间隔符得到第一数组;通过正则表达式从所述目标参数的字符串格式中提取出数字型字符得到第二数组;检测所述第二数组中是否缺失后三位的数组元素,若不缺失后三位的数组元素,则生成用于记录上述不缺失后三位的数组元素的时间格式串的第三数组;通过所述第二数组中的后三位的数组元素中各个数组元素的数值串个数,确定时间格式转换后的时间后三位格式化串;根据所述第二数组中的前三位的数组元素中各个数组元素的数值确定对应的年月日排列顺序,并基于所述第二数组中的前三位的数组元素中各个数组元素的数值串个数确定时间格式转换后的时间前三位格式化串;将时间格式转换后的年月日排列顺序、时间后三位格式化串、时间前三位格式化串作为时间排列属性存入到请求方ID为键的缓存池中;基于所述缓存池中的时间排列属性确定所述第三数组的时间格式化串,通过所述第三数组的时间格式化串与所述第一数组中的间隔符得到时间格式转换的时间字符串。
[0012]在一种可能的实现方式中,所述根据所述第二数组中的前三位的数组元素中各个数组元素的数值确定对应的年月日排列顺序的步骤,包括:检测所述第二数组中的前三位的数组元素中各个数组元素的数值是否存在值域
混淆,其中,所述值域混淆的类型包括单混淆、双混淆及三混淆;在所述值域混淆的类型为单混淆时,基于所述第二数组中的前三位的数组元素中各个数组元素的数值确定对应的年月日排列顺序;在所述值域混淆的类型为双混淆与三混淆时,对无法确定的位数组元素采用排列组合方式得到多种日期排列组合方式,并将所述多种日期排列组合方式存入具有暂缓执行标记的第四数组中;在所述索引遍历完所述参数信息列表中的参数之后,计算得到所述第四数组中各种日期排列组合的概率;通过所述各种日期排列组合的概率从所述请求方ID为键的缓存池中获取第一格式化串数组及第二格式化串数组,其中,所述第一格式化串数组包括可能的日期排列组合,所述第二格式化串数组包括所有的日期排列组合;通过所述第一格式化串数组及所述第二格式化串数组确认所述第二数组中的前三位的数组元素中各个数组元素的数值确定对应的年月日排列顺序。
[0013]在一种可能的实现方式中,所述基于所述目标参数对应的参数类型及转换后的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种字符串与时间字段的转换方法,其特征在于,所述方法包括:通过应用程序编程接口拦截执行目标方法的请求报文,从所述请求报文中获取用于实现所述目标方法的类及对应的目标实现方法;获取所述目标实现方法的参数信息列表;通过索引遍历所述参数信息列表,并判断当前索引下的所述参数信息列表中的参数是否包含预设注解标记;在当前索引下的所述参数信息列表中的目标参数包含预设注解标记时,判断所述目标参数的字符串格式;根据所述目标参数的字符串格式,对所述目标参数进行时间格式转换;基于所述目标参数对应的参数类型及转换后的时间格式,更新所述目标参数。2.如权利要求1所述的字符串与时间字段的转换方法,其特征在于,所述根据所述目标参数的字符串格式,对所述目标参数进行时间格式转换的步骤,包括:若所述目标参数的字符串格式中的属性值为预设位数的纯数字,则采用时间戳的反序列化方式实现对所述目标参数进行时间格式转换;若所述目标参数的字符串格式通过正则表达式,符合预设的统一表达格式,则直接将目标参数的字符串格式作为时间格式转换的时间格式;若所述目标参数的字符串格式为其他字符串格式,则按照预设的时间格式转换规则对所述目标参数进行时间格式转换。3.如权利要求2所述的字符串与时间字段的转换方法,其特征在于,所述若所述目标参数的字符串格式为其他字符串格式,则按照预设的时间格式转换规则对所述目标参数进行时间格式转换的步骤,包括:通过正则表达式从所述目标参数的字符串格式中提取出字符之间的间隔符得到第一数组;通过正则表达式从所述目标参数的字符串格式中提取出数字型字符得到第二数组;检测所述第二数组中是否缺失后三位的数组元素,若不缺失后三位的数组元素,则生成用于记录上述不缺失后三位的数组元素的时间格式串的第三数组;通过所述第二数组中的后三位的数组元素中各个数组元素的数值串个数,确定时间格式转换后的时间后三位格式化串;根据所述第二数组中的前三位的数组元素中各个数组元素的数值确定对应的年月日排列顺序,并基于所述第二数组中的前三位的数组元素中各个数组元素的数值串个数确定时间格式转换后的时间前三位格式化串;将时间格式转换后的年月日排列顺序、时间后三位格式化串、时间前三位格式化串作为时间排列属性存入到请求方ID为键的缓存池中;基于所述缓存池中的时间排列属性确定所述第三数组的时间格式化串,通过所述第三数组的时间格式化串与所述第一数组中的间隔符得到时间格式转换的时间字符串。4.如权利要求3所述的字符串与时间字段的转换方法,其特征在于,所述根据所述第二数组中的前三位的数组元素中各个数组元素的数值确定对应的年月日排列顺序的步骤,包括:检测所述第二数组中的前三位的数组元素中各个数组元素的数值是否存在值域混淆,
其中,所述值域混淆的类型包括单混淆、双混淆及三混淆;在所述值域混淆的类型为单混淆时,基于所述第二数组中的前三位的数组元素中各个数组元素的数值确定对应的年月日排列顺序;在所述值域混淆的类型为双混淆与三混淆时,对无法确定的位数组元素采用排列组合方式得到多种日期排列组合方式,并将所述多种日期排列组合方式存入具有暂缓执行标记的第四数组中;在所述索引遍历完所述参数信息列表中的参数之后,计算得到所述第四数组中各种日期排列组合的概率;通过所述各种日期排列组合的概率从所述请求方ID为键的缓存池中获取第一格式化串数组及第二格式化串数组,其中,所述第一格式化串数组包括可能的日期排列组合,所述第二格式化串数组包括所有的日期排列组合;通过所述第一格式化串数组及所述第二格式化串数组确认所述第二数组中的前三位的数组元素中各个数组元素的数值确定对应的年月日排列顺序。5.如权利要求1

4中任意一项所述的字符串与时间字段的转换方法,其特征在于,所述基于所述目标参数对应的参数类型及转换后的时间格式,更新所述目标参数的步骤,包括:在所述目标参数的参数类型为字符型或长整型时,通过所述目标参数的参数名从所述请求报文中获得该参数名对应的原始值,采用转换后的时间格式替换所述原始值,得到更新后的目标参数;在所述目标参数的参数类型为JSONObject类型时,遍历读取参数配置通过自定义的参数名、参数取值路径在所述请求报文中获取对应的原始值,采用转换后的时间格式替换所述原始值,得到更新后的目标参数;在所述目标参数的参数类型为对象类型时,遍历所述目标参数下的所有字段,检测该所有字段中是否存在包括有所述预设注解标记的字段,若所有字段中包括有所述预设注解标记的字段,则通过所述目标参数的参数名从所述请求...

【专利技术属性】
技术研发人员:李嘉明高忠生顾凌云郭志攀王伟宋志勇
申请(专利权)人:上海冰鉴信息科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1