在Python中将Unicode JSON转换为普通JSON

12
我得到了以下JSON:{u'a': u'aValue',u'b': u'bValue',u'c': u'cValue'},是通过在我的Python代码中使用request.json获取的。现在,我想将Unicode JSON转换为普通的JSON,即应该像这样:{"a": "aValue","b": "bValue","c": "cValue"}。如何在不进行任何手动替换的情况下完成此操作?请帮忙。

可能是Python: json.loads返回以'u'为前缀的项的重复问题。 - Bhargav Rao
这个问题为什么困扰着你? - timgeb
已经被问过很多次了,您是否进行了研究?如何在Python中从JSON获取字符串对象而不是Unicode对象? - Bhargav Rao
4个回答

13

{u'a': u'aValue', u'b': u'bValue', u'c': u'cValue'}是一个字典,你将其称为unicode json。如果你想从中获取常规的json格式,只需像这样做:

x={u'a': u'aValue', u'b': u'bValue', u'c': u'cValue'}
y=json.dumps(x)
print y
输出将是 {"a": "aValue", "c": "cValue", "b": "bValue"}

14
Json.dumps并不会返回一个字典,它只会将其转换为一个字符串。 - wolfsbane
不要忘记 import json - Keyslinger

8

对于Python 2.x版本

import yaml
import json
json_data = yaml.load(json.dumps(request.json()))

现在,这个json_data可以被用作json,也可以具有json的列表。

yamal.load()已经被弃用。请参考https://github.com/yaml/pyyaml/wiki/PyYAML-yaml.load(input)-Deprecation。 - Omkesh Sajjanwar

1
你可以使用列表推导式将所有的键和值编码为ascii格式,如下所示:
dict([(k.encode('ascii','ignore'), v.encode('ascii','ignore')) for k, v in dct.items()])

注意:通常没有不使用Unicode格式存储数据的好处,所以除非您有特定的原因不使用Unicode格式,否则建议保留。

0

PyPi中可用的库可能会很有帮助,详情请见:unidecode

它旨在将带有变音符号(重音)的欧洲字符转换为它们的基本ASCII字符,但是当Unicode字符已在ASCII范围内时,它同样表现出色。

from unicode import unidecode

def fUnUn(sOrU):
    return unidecode(sOrU).encode('ascii') if type(sOrU) is unicode else sOrU

sASCII = fUnUn(u'ASCII')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接