gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 11:00:25 34 4
gpt4 key购买 nike

我正在尝试将序列值与 YAML 合并到使用 SnakeYAML 和 JAVA 进行反序列化之后。

我期望这个结果:

{
"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

此示例返回消息:

解析 block 映射时 在“”第2行第3列中: seq1:&anch1 ^预期的,但发现'' 在“”第 7 行第 5 列中: * anchor 1 ^

example

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

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

有什么想法吗?谢谢

最佳答案

发现这个:Github issue 。所以你的场景是不可能的......

另请查看有关 YAML 数组合并的问题:How to merge YAML arrays

解决方法是为值分配唯一的键,如下所示:

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

这将产生:

"root": {
"seq3": {
"1": "001",
"2": "002",
"3": "003"
},
"seq2": {
"1": "001",
"2": "002"
},
"seq1": {
"1": "001",
"2": "002"
},
"seq4": {
"1": "001",
"2": "002",
"3": "003"
}
}

关于java - YAML 使用 SnakeYAML JAVA 合并单个序列并反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51377855/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com