我在使用包含dict
和list
的{{1}}解析ascii
时遇到问题。这是我漂亮的字符串:
unicode
使用pretty_string = """{
"list": [
"this_keyword_in_ascii",
u"\u0627\u0644\u0623\u0633\u062f", # unicoded arabic
u"\u0633\u0648\u0631\u064a\u0627",
u"\u0627\u0644\u0625\u0631\u0647\u0627\u0628"
]
}
"""
解码时出现以下错误:dict = cjson.decode(pretty_string)
。
我试过DecodeError('cannot parse JSON description')
无济于事。请帮忙!
答案 0 :(得分:2)
您不拥有JSON字符串。你有一个Python文字。改为使用ast.literal_eval()
function:
>>> literal_eval('''\
... {
... "list": [
... "this_keyword_in_ascii",
... u"\u0627\u0644\u0623\u0633\u062f", # unicoded arabic
... u"\u0633\u0648\u0631\u064a\u0627",
... u"\u0627\u0644\u0625\u0631\u0647\u0627\u0628"
... ]
... }
... ''')
{'list': ['this_keyword_in_ascii', u'\u0627\u0644\u0623\u0633\u062f', u'\u0633\u0648\u0631\u064a\u0627', u'\u0627\u0644\u0625\u0631\u0647\u0627\u0628']}
JSON字符串永远不会以u""
开头,这是一种Python表示法。 JSON也不混合字节值和unicode值,JSON字符串始终是Unicode。
您可能想了解产生这种结构的原因;也许这个字符串的产生应该使用json.dumps()
而不是print
,str()
或repr()
。
答案 1 :(得分:1)
您正在尝试将包含 Python词典的字符串解码为JSON。您应该使用带有JSON的decode
或带有Python词典的encode
。