-1

我在解析 adict时遇到了麻烦list,其中包含asciiunicode。这是我漂亮的字符串:

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')

我试过pretty_string.decode('unicode_escape')无济于事。请帮忙!

4

2 回答 2

2

没有JSON 字符串。你有一个 Python 文字。请改用该ast.literal_eval()功能

>>> 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()而不是printstr()repr()

于 2013-05-31T12:12:04.913 回答
1

您正在尝试将包含Python 字典的字符串解码为 JSON 。您应该使用decodeJSON 或encodePython dict。

于 2013-05-31T12:11:43.107 回答