【发布时间】:2022-10-14 15:40:25
【问题描述】:
我必须使用以下 YAML 文件:
HEADER:
properly_formated_section:
..
config:
value1: {value: 1, id: 0}
value2: {value: 2, id: 1}
当反序列化,然后序列化(仅使用 yaml)时,我获得以下内容:
HEADER:
properly_formated_section:
..
config:
value1:
- value: 1
id: 0
value2:
- value: 2
if: 1
这会给我之后使用该文件的软件带来麻烦,因此我需要保持“字典为字符串”的格式。
到目前为止,我能做的最好的事情是:
HEADER:
properly_formated_section:
..
config:
value1: '{"value": 1, "id": 0}'
value2: '{"value": 2, "id": 1}'
在这种情况下,添加的单引号和双引号会导致问题。
是否有一个简单的解决方案可以将其保留在原始文件中,不带引号?该解决方案只需要关注config 键,而别管其他人。
【问题讨论】:
-
你的字典不是一个字符串,它是一个对象(除了最后一个例子,它有未指定的问题)。这两种 YAML 形式是等价的,所以如果您遇到“问题”之后的软件,它就无法真正处理 YAML。
-
这两种语法在 YAML 中是等价的。使用该文件的软件已损坏,应该教您如何正确解析 YAML。 (这是原则性答案,不一定是实际答案;))
-
我同意你的观点,但我无法修复软件(yaml 文件实际上有无效标签,我需要在反序列化之前删除并在序列化之后替换......)