如何在python

时间:2016-11-15 06:57:57

标签: json python-2.7 yaml

使用YAML转储JSON,

c= {"a":1} 
d = yaml.dump(c)

使用YAML加载JSON

yaml.load(d) 
{'a': 1} # double quotes is lost

如何确保负载的输出有双引号?

注意:我也试过json和simplejson,所有行为都一样。

2 个答案:

答案 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}