使用YAML转储JSON,
c= {"a":1}
d = yaml.dump(c)
使用YAML加载JSON
yaml.load(d)
{'a': 1} # double quotes is lost
如何确保负载的输出有双引号?
注意:我也试过json和simplejson,所有行为都一样。
答案 0 :(得分:3)
对于Python,单引号和双引号之间没有区别。
如果您需要以JSON字符串作为响应,那么使用标准json
模块 - 它将使用正确格式化的JSON创建字符串 - 使用双引号。
>>> import json
>>> json.dumps({'a': 1})
'{"a": 1}'
某些框架或模块(如requests
)具有内置函数
发送正确格式化的JSON(他们可能在后台使用标准json
模块)所以不必自己完成。
答案 1 :(得分:1)
这个
c = {"a":1}
d = yaml.dump(c)
不会转储JSON,它会将python dict
转储为YAML。使用json.dumps()
从dict
创建一个JSON字符串,然后选择加载/转储为YAML,并通过在加载时指定preserver_quotes
来保留双引号:
import sys
import json
import ruamel.yaml
c= {"a":1}
json_string = json.dumps(c)
print(json_string)
print('---------')
data = ruamel.yaml.round_trip_load(json_string, preserve_quotes=True)
data['a'] = 3
ruamel.yaml.round_trip_dump(data, sys.stdout)
将打印:
{"a": 1}
---------
{"a": 3}