And*_*ark 24
如果您只是处理简单的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)
Run Code Online (Sandbox Code Playgroud)
以下是它的工作原理示例:
>>> 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'}
Run Code Online (Sandbox Code Playgroud)
这个答案适用于更复杂的JSON结构,并对object_hook参数提供了一些很好的解释.还有另一个答案,递归地获取json.loads()调用的结果并将所有Unicode字符串转换为字节字符串.
tor*_*ord 14
如果json对象是数据类型的混合,而不仅仅是unicode字符串,您可以使用以下表达式:
def ascii_encode_dict(data):
ascii_encode = lambda x: x.encode('ascii') if isinstance(x, unicode) else x
return dict(map(ascii_encode, pair) for pair in data.items())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23697 次 |
| 最近记录: |