解码混合编码JSON字符串时出错

时间:2013-05-31 12:06:16

标签: python json unicode decode arabic

我在使用包含dictlist的{​​{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')无济于事。请帮忙!

2 个答案:

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

答案 1 :(得分:1)

您正在尝试将包含 Python词典的字符串解码为JSON。您应该使用带有JSON的decode或带有Python词典的encode