【发布时间】:2019-05-27 09:11:32
【问题描述】:
在尝试从 python 中的 JSON 创建 YAML 时,使用 PyYAML 库,我能够将 JSON 转换为 YAML。但是,在我收到的 YAML 中,JSON 的所有括号都展开了,而我想保留几个从 JSON 到转换后的 YAML 的方括号(列表)。如何请求此库调用不将 JSON 中的列表展开到 YAML 中,而是将其保留为列表?
我的问题的快照如下:
import yaml
import json
original_json = {'a': {'next': ['b'], 'prev': []},
'b': {'next': ['c'], 'prev': ['a']},
'c': {'next': ['d', 'e'], 'prev': ['b']},
'd': {'next': [], 'prev': ['c']},
'e': {'next': ['f'], 'prev': ['c']},
'f': {'next': [], 'prev': ['e']}}
obtained_yaml = yaml.dump(yaml.load(json.dumps(original_json)), default_flow_style=False)
# obtained_yaml looks like
#
# a:
# next:
# - b
# prev: []
# b:
# next:
# - c
# prev:
# - a
# c:
# next:
# - d
# - e
# prev:
# - b
# d:
# next: []
# prev:
# - c
# e:
# next:
# - f
# prev:
# - c
# f:
# next: []
# prev:
# - e
# expected yaml should look like
#
# a:
# next:
# - ["b"]
# prev: []
# b:
# next:
# - ["c"]
# prev:
# - ["a"]
# c:
# next:
# - ["d"]
# - ["e"]
# prev:
# - ["b"]
# d:
# next: []
# prev:
# - ["c"]
# e:
# next:
# - ["f"]
# prev:
# - ["c"]
# f:
# next: []
# prev:
# - ["e"]
我尝试了几种方法来解决这个问题,但所有这些都没有以预期的 json 应该出现的方式工作。需要有关如何完成它的建议。
【问题讨论】:
-
我不确定您所说的“本机”PyYAML 究竟是什么意思,包括非本机、C、绑定,但是当您以您的方式使用 PyYAML 时它们不会被调用。