YAML 配置文件中的重复键

Posted

技术标签:

【中文标题】YAML 配置文件中的重复键【英文标题】:Duplicate key in YAML configuaration file 【发布时间】:2018-05-19 23:32:59 【问题描述】:

在 YAML 中有以下内容-

key1
  key2: "value"

key1
  key2
    key3: "value2"

获取异常重复键key1。 引起:org.yaml.snakeyaml.parser.ParserException: while parseing MappingNode

尝试各种组合但无法正确解析。

有人可以在这里提供帮助或指导。

谢谢

【问题讨论】:

您可以指示 SnakeYAML 允许重复键。 【参考方案1】:

您的 YAML 在语法上无效,但我假设它实际上看起来像这样:

key1:
  key2: "value"

key1:
  key2:
    key3: "value2"

您的错误是key1 在根节点中被用作映射键两次。根据YAML spec,这是非法的:

映射节点的内容是一组无序的键:值节点对,每个键都是唯一的。

解决办法是让同一个映射的所有键都是唯一的:

key11:
  key2: "value"

key12:
  key2:
    key3: "value2"

【讨论】:

由于某些要求限制,无法使键唯一【参考方案2】:

我也遇到了同样的问题。然后它击中了我!答案很简单。 来自

mapping:
  refresh:
    schedule:
      frequency:
        milli: 86400000
mapping:
  refresh:
    schedule:
      initial:
        delay:
          ms: 30000

mapping:
  refresh:
    schedule:
      frequency:
        milli: 86400000
      initial:
        delay:
          ms: 30000

【讨论】:

【参考方案3】:

你可以这样修复它:

key1
  key2: "value"
  key2.key3: "value2"

【讨论】:

以上是关于YAML 配置文件中的重复键的主要内容,如果未能解决你的问题,请参考以下文章

python读取yaml配置文件

二、SpringBoot的配置--yaml

mongodb3.2配置文件yaml格式 详解

mongodb 3.2 yaml 配置详解及范例

golang yaml配置文件解析

c++ 开发中利用yaml-cpp读写yaml配置文件