[发明专利]变量替换方法、装置、系统及存储介质在审
申请号: | 202110266762.6 | 申请日: | 2021-03-11 |
公开(公告)号: | CN113031959A | 公开(公告)日: | 2021-06-25 |
发明(设计)人: | 李瑞 | 申请(专利权)人: | 北京金山云网络技术有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 北京华夏泰和知识产权代理有限公司 11662 | 代理人: | 卢万腾;石鸣宇 |
地址: | 100085 北京市海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 变量 替换 方法 装置 系统 存储 介质 | ||
本发明实施例涉及一种变量替换方法、装置、系统及存储介质,该方法包括:获取包含有预设变量表达式的第一描述信息、至少一个变量值,以及标识信息;对第一描述信息进行解析,获取键值对;依次遍历键值对中的值对应的数据类型;当第一值的数据类型为第一预设数据类型时,从第一值中提取预设变量表达式;根据标识信息以及变量,提取与变量对应的第一变量值;根据预设变量表达式和第一变量值,将预设变量表达式中的变量替换为第一变量值,直至第一描述信息中的所有变量都已替换为与之对应的变量值后,输出第二描述信息。通过该方式,在保留Json或Yaml的原始语法,且在充分支持Json或Yaml数据类型的前提下,完成变量的替换过程。
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种变量替换方法、装置、系统及存储介质。
背景技术
当用Json或者Yaml描述信息时,用以描述信息的表达式中有部分数据需要在运行时才能被确定,所以在初始表达式中,该部分数据暂时以变量的形式体现。当该部分数据的具体数值确定后,则将这部分数据替换掉相应的变量。
在相关技术方案中,一般使用模版引擎实现将数据替换掉相应的变量的过程,比如采用Go Template、Beetl、Enjoy、Freemarker等。但是采用这些模板引擎执行上述操作时,会存在如下问题:
第一,模板引擎自身的语法体系会破毁掉json或Yaml的原始语法。
以Go Template为例,在Go Template的语法体系中,{{}}包裹语法内容将被解析,而不被{{}}包裹的内容则被原样输出。具体参见图1所示,图1示意处理Go Template语法体系下的代码表达式。对于图1中{{}}内的内容,Json或Yaml的语法解析工具则无法识别,进而无法继续运行程序。
第二,Json和Yaml的基本数据类型包括:字符串、数字、对象、数组、布尔以及Null等类型。但是,一般的模版引擎并不原生支持这些数据类型,若想输出这些类型的数据,需要其他插件实现,操作过程繁琐。
发明内容
鉴于此,为解决现有技术中上述全部或部分技术问题,本发明实施例提供一种变量替换方法、装置、系统及存储介质。
第一方面,本发明实施例提供一种变量替换方法,该方法包括:
获取包含有预设变量表达式的第一描述信息、至少一个变量值,以及每一个变量值对应的标识信息;
对第一描述信息进行解析,获取至少一个键值对;
依次遍历每一个键值对中的值对应的数据类型;
当第一值的数据类型为第一预设数据类型时,从第一值中提取预设变量表达式,其中,第一值为至少一个键值对中第一键值对对应的值,第一键值对为至少一个键值对中的任一键值对,预设变量表达式中包括变量;
根据标识信息以及变量,从至少一个变量值中提取与变量对应的第一变量值;
根据预设变量表达式和第一变量值,将预设变量表达式中的变量替换为第一变量值,直至第一描述信息中的所有变量都已替换为与之对应的变量值后,输出第二描述信息。
在一个可能的实施方式中,当第一值的数据类型为第二预设数据类型时,方法还包括:
将第一值作为第i子层的键值对,进行层级递进划分;
将当前层作为第i子层的键值对中的关键字,当前层的子层作为第i子层的键值对对应的第i值;
识别第i值的数据类型;
当第i值的数据类型为第一数据类型时,从第i值中提取预设变量表达式,
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京金山云网络技术有限公司,未经北京金山云网络技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110266762.6/2.html,转载请声明来源钻瓜专利网。