[發明專利]變量替換方法、裝置、系統及存儲介質在審
| 申請號: | 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.szxzyx.cn/pat/books/202110266762.6/2.html,轉載請聲明來源鉆瓜專利網。





