YAML合并单个序列并使用SnakeYAML JAVA反序列化

YAML合并单个序列并使用SnakeYAML JAVA反序列化,java,yaml,snakeyaml,Java,Yaml,Snakeyaml,我试图在用JAVA反序列化SnakeYAML之后,将序列值与YAML合并到一起 我期待这一结果: { "root": { "seq4": [ "001", "002", "003" ], "seq3": [ "001", "002", "003" ], "seq2": [ "001", "002" ], "seq1": [

我试图在用JAVA反序列化SnakeYAML之后,将序列值与YAML合并到一起

我期待这一结果:

{
  "root": {
    "seq4": [
      "001", 
      "002",
      "003"
    ], 
    "seq3": [
      "001", 
      "002",
      "003"
    ], 
    "seq2": [
      "001", 
      "002"
    ], 
    "seq1": [
      "001", 
      "002"
    ]
  }
}
但对于我来说,这个YAML示例不可能做到这一点:

root: 
  seq1: &seq1
    - '001' #first
    - '002' #secod
  seq2: *seq1
  seq3: &seq3
    *seq1
    - '003' #third
  seq4: *seq3
此示例返回以下消息:

在分析块映射时 在“”第2行第3列中: 序号1:&1 ^ 应为,但找到“” 在“”第7行第5列中: *主播1 ^

此外,我还探讨了此YAML定义,但其返回错误为:

root: 
  seq1: &anch1
    - '001' #first
    - '002' #secod
  seq2: *anch1
  seq3: &anch2
    <<: *anch1
    - '003' #third
  seq4: *anch2
根目录:
序号1:&1
-“001”首先
-“002”秒
序号2:*1
序号3:&2
找到此:。所以你的方案是不可能的

另外,请看有关合并YAML阵列的问题:

解决方法是为值指定唯一键,如下所示:

root: 
  seq1: &anch1
    1: '001' #first
    2: '002' #secod
  seq2: *anch1
  seq3: &anch2
    <<: *anch1
    3: '003' #third
  seq4: *anch2
找到此:。所以你的方案是不可能的

另外,请看有关合并YAML阵列的问题:

解决方法是为值指定唯一键,如下所示:

root: 
  seq1: &anch1
    1: '001' #first
    2: '002' #secod
  seq2: *anch1
  seq3: &anch2
    <<: *anch1
    3: '003' #third
  seq4: *anch2

在YAML中,没有语言独立的序列元素,就像映射没有语言独立的序列元素一样


其中一个原因是,您仍然可以使用merge键(
),在YAML中,没有语言独立的序列元素,就像映射的语言独立一样


其中一个原因是,您仍然可以使用merge键(
谢谢您的快速响应。但是我不喜欢将数组合并为复杂类型。谢谢您的快速响应。但是我不喜欢将数组合并为复杂类型。
root: 
  seq1: &seq1
    - '001' #first
    - '002' #secod
  seq2: *seq1
  seq3: !CombineSequences &seq3
    - *seq1
    - ['003'] #third
  seq4: *seq3