YAML文件的处理方法、装置、电子设备和存储介质制造方法及图纸

技术编号:37717159 阅读:9 留言:0更新日期:2023-06-02 00:13
本公开提供了一种YAML文件的处理方法、装置、电子设备和存储介质,涉及云计算技术领域,尤其涉及云原生、容器技术等领域。具体实现方案为:将第一YAML文件转换为第一JSON对象,并基于第一YAML文件生成第一抽象语法树;对第一JSON对象进行修改,得到第二JSON对象;基于第二JSON对象对第一抽象语法树进行修改,得到第二抽象语法树;基于第一JSON对象以及第二抽象语法树,得到第二YAML文件。根据本公开,在将YAML文件转换为JSON对象进行修改时,不会丢失各数据节点之间的顺序关系,从而避免修改出错。错。错。

【技术实现步骤摘要】
YAML文件的处理方法、装置、电子设备和存储介质


[0001]本公开涉及云计算
,尤其涉及云原生、容器技术等领域,具体涉及一种YAML文件的处理方法、装置、电子设备和存储介质。

技术介绍

[0002]YAML(YAML Ain't Markup Language,不是一种标记语言)是一种可读性高、易于理解且通常用于表达数据序列化的格式。在云原生时代,许多开发过程都是基于YAML进行的。例如,Kubernetes集群中对资源管理和资源对象的编排部署都可以通过YAML文件来解决。
[0003]但YAML并不易于阅读与编写。因此,一般对YAML的修改都是通过将其转换为JSON(JavaScript Object Notation,JS对象简谱)对象实现的,即对转换得到的JSON对象进行修改,之后再转换为YAML文件。在此过程中,可能会丢失YAML文件中的部分信息。

技术实现思路

[0004]本公开提供了一种YAML文件的处理方法、装置、电子设备和存储介质。
[0005]根据本公开的一方面,提供了一种YAML文件的处理方法,包括:
[0006]将第一YAML文件转换为第一JSON对象,并基于第一YAML文件生成第一抽象语法树;
[0007]对第一JSON对象进行修改,得到第二JSON对象;
[0008]基于第二JSON对象对第一抽象语法树进行修改,得到第二抽象语法树;
[0009]基于第一JSON对象以及第二抽象语法树,得到第二YAML文件。
[0010]根据本公开的另一方面,提供了一种YAML文件的处理装置,包括:
[0011]转换模块,用于将第一YAML文件转换为第一JSON对象,并基于第一YAML文件生成第一抽象语法树;
[0012]JSON修改模块,用于对第一JSON对象进行修改,得到第二JSON对象;
[0013]语法树修改模块,用于基于第二JSON对象对第一抽象语法树进行修改,得到第二抽象语法树;
[0014]YAML确定模块,用于基于第一JSON对象以及第二抽象语法树,得到第二YAML文件。
[0015]根据本公开的另一方面,提供了一种电子设备,包括:
[0016]至少一个处理器;以及
[0017]与该至少一个处理器通信连接的存储器;其中,
[0018]该存储器存储有可被该至少一个处理器执行的指令,该指令被该至少一个处理器执行,以使该至少一个处理器能够执行本公开实施例中任一的方法。
[0019]根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,该计算机指令用于使该计算机执行根据本公开实施例中任一的方法。
[0020]根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,该计算机
程序在被处理器执行时实现根据本公开实施例中任一的方法。
[0021]根据本公开实施例的技术方案,在将第一YAML文件转换为第一JSON对象进行修改的过程中,还基于第一YAML文件生成对应的第一抽象语法树,如此,可以用抽象语法树保存YAML文件中各数据节点之间的语法关系信息。对第一JSON对象修改得到第二JSON对象后,基于第二JSON对象对第一抽象语法树进行修改,使得到的第二抽象语法树包含修改后的各数据节点之间的语法关系信息。如此,基于第二JSON对象以及第二抽象语法树得到的第二YAML文件,不会丢失各数据节点之间的顺序关系,从而避免修改出错。
[0022]应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
[0023]附图用于更好地理解本方案,不构成对本公开的限定。其中:
[0024]图1是本公开一实施例提供的YAML文件的处理方法的示意性流程图;
[0025]图2是本公开另一实施例提供的YAML文件的处理方法中的数据转换示意图;
[0026]图3是本公开实施例中的一个示例性的AST逻辑图;
[0027]图4是本公开一实施例提供的YAML文件的处理装置的示意性框图;
[0028]图5是本公开另一实施例提供的YAML文件的处理装置的示意性框图;
[0029]图6是用来实现本公开实施例的YAML文件的处理方法的电子设备的框图。
具体实施方式
[0030]以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
[0031]本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。本文中术语“第一”、“第二”表示指代多个类似的技术用语并对其进行区分,并不是限定顺序的意思,或者限定只有两个的意思,例如,第一特征和第二特征,是指代有两类/两个特征,第一特征可以为一个或多个,第二特征也可以为一个或多个。
[0032]另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
[0033]为了便于理解,下面对本公开实施例所涉及到的基本概念进行简单说明。应理解,下文所介绍的基本概念并不对本公开实施例产生限定。
[0034]1、YAML:意为不是一种标记语言,它是一个可读性高,易于理解,用来表达数据序列化的格式。
[0035]2、JSON:一种轻量级的数据交换格式,易于人阅读和便携,可以在多种语言之间进
行数据交换,同时也易于机器解析与生成。
[0036]3、抽象语法树(Abstract Syntax Code,AST):指源代码的抽象语法结构的树状表示,树上的每个节点都表示源代码中的一种结构,因为该语法树可以不用表示出真实语法出现的每一个细节,所以称为抽象语法树。实际应用中,抽象语法树中的信息表达可以采用自定义方式实现。
[0037]图1示出了本公开一实施例提供的YAML文件的处理方法。该方法可以应用于电子设备。该电子设备例如是单击或多级的终端、服务器或其他处理设备,其中,终端可以为为台式计算机、移动设备、PDA(Personal Digital Assistant,个人数字助理)、手持设备、计算设备、车载设备、可穿戴设备等用户设备(User Equipment本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种YAML文件的处理方法,包括:将第一YAML文件转换为第一JSON对象,并基于所述第一YAML文件生成第一抽象语法树;对所述第一JSON对象进行修改,得到第二JSON对象;基于所述第二JSON对象对所述第一抽象语法树进行修改,得到第二抽象语法树;基于所述第一JSON对象以及所述第二抽象语法树,得到第二YAML文件。2.根据权利要求1所述的方法,其中,所述基于所述第一YAML文件生成第一抽象语法树,包括:确定所述第一YAML文件中的多个节点以及所述多个节点中的每个节点的属性;其中,多个节点中的部分节点或所述部分节点的属性是基于所述第一YAML文件中的注释得到的;基于所述YAML文件中的多个节点以及所述多个节点中的每个节点的属性,生成第一抽象语法树。3.根据权利要求2所述的方法,其中,所述确定所述第一YAML文件中的多个节点以及所述多个节点中的每个节点的属性,包括:基于所述第一YAML文件中的单行注释,创建第一YAML文件中的第一节点;基于所述单行注释中的注释内容,得到所述第一节点的取值属性。4.根据权利要求2或3所述的方法,其中,所述确定所述第一YAML文件中的多个节点以及所述多个节点中的每个节点的属性,包括:基于所述第一YAML文件中的数据节点,得到所述第一YAML文件中的第二节点;基于所述数据节点所在行的行内注释,得到所述第二节点的注释属性。5.根据权利要求1

4中任一项所述的方法,其中,所述基于所述第二JSON对象对所述第一抽象语法树进行修改,得到第二抽象语法树,包括:确定所述第二JSON对象所对应的语法关系与所述第一抽象语法树所对应的语法关系之间的差异;基于所述差异对所述第一抽象语法树进行修改,得到所述第二抽象语法树。6.根据权利要求1

5中任一项所述的方法,其中,所述基于所述第一JSON对象以及所述第二抽象语法树,得到第二YAML文件,包括:将所述第一JSON对象转换为第三YAML文件;基于所述第二抽象语法树,在所述第三YAML文件中增加注释和/或调整所述第三YAML文件中的数据节点之间的顺序,得到所述第二YAML文件。7.一种YAML文件的处理装置,包括:转换模块,用于将第一YAML文件转换为第一JSON对象,并基于所述第一YAML文件生成第一抽象语法树;JSON修改模块,用于对所述第一JSON对象进行修改,得到第二JSON对象;语法树修改模块,用于基于所述第二JSON对象对所述第一抽象语法树进行修改,得到第二抽象语法树;YAM...

【专利技术属性】
技术研发人员:肖超超孙延兴李玉林王思雪陈滢蓼许浩唐国东
申请(专利权)人:北京百度网讯科技有限公司
类型:发明
国别省市:

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

1