Windows 7 上的 Python 2.7.6 我使用的代码:
import json
settings = {
"vo" : "direct3d",
"ao" : "dsound",
"volume" : "100",
"priority" : "abovenormal"}
json.dump(settings, open('settings.json', 'w'))
settings = json.load(open('settings.json', 'r'))
print settings
在 settings.json 中我得到:
{"volume": "100", "priority": "abovenormal", "ao": "dsound", "vo": "direct3d"}
最后控制台输出:
{u'volume': u'100', u'priority': u'abovenormal', u'ao': u'dsound', u'vo': u'direct3d'}
我做错了什么?
最佳答案
你没有做错什么。 json.load
会将所有内容转换为 unicode,这就是 u
所代表的内容。
这不应影响该字典的使用,例如:
>>> result = {u'volume': u'100', u'priority': u'abovenormal', u'ao': u'dsound',
u'vo': u'direct3d'}
>>> result['volume']
u'100'
如果发现有问题,您可以随时使用 simplejson
这不会强制使用 unicode。或者您可以编写一个转换器函数并将其挂接到 json.load
- 作为 object_hook
参数的函数。
这是 object_hook-example from the docs :
>>> import json
>>> def as_complex(dct):
... if '__complex__' in dct:
... return complex(dct['real'], dct['imag'])
... return dct
...
>>> json.loads('{"__complex__": true, "real": 1, "imag": 2}',
... object_hook=as_complex)
(1+2j)
>>> import decimal
>>> json.loads('1.1', parse_float=decimal.Decimal)
Decimal('1.1')
关于python - 将字典保存到 json 或从 json 加载字典时出现意外输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22908654/