我正在使用 json.dump() 和 json.load() 将字符串字典保存到磁盘/从磁盘读取。问题是我不能在 unicode 中有任何字符串。无论我如何将参数设置为转储/加载(包括 ensure_ascii 和编码),它们似乎都是 unicode。
最佳答案
如果你只是处理简单的 JSON 对象,你可以使用以下:
def ascii_encode_dict(data):
ascii_encode = lambda x: x.encode('ascii')
return dict(map(ascii_encode, pair) for pair in data.items())
json.loads(json_data, object_hook=ascii_encode_dict)
这是一个如何工作的例子:
>>> json_data = '{"foo": "bar", "bar": "baz"}'
>>> json.loads(json_data) # old call gives unicode
{u'foo': u'bar', u'bar': u'baz'}
>>> json.loads(json_data, object_hook=ascii_encode_dict) # new call gives str
{'foo': 'bar', 'bar': 'baz'}
This answer适用于更复杂的 JSON 结构,并对 object_hook
参数给出了一些很好的解释。还有另一个答案,它递归地获取 json.loads()
调用的结果并将所有 Unicode 字符串转换为字节字符串。
关于json - 强制 Python json 模块使用 ASCII,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9590382/