【问题标题】:Error decoding mixed encoding JSON string解码混合编码 JSON 字符串时出错
【发布时间】:2013-05-31 12:06:16
【问题描述】:

我无法用包含asciiunicodelist 解析dict。这是我的漂亮字符串:

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') 无济于事。请帮忙!

【问题讨论】:

  • 这是因为这是一个愚蠢的问题而被否决了吗?
  • 你真的想解码python dict吗? (或编码)
  • 好的,现在我意识到它是一个字符串,但它与 JSON完全没有关系

标签: python json unicode decode arabic


【解决方案1】:

您确实没有有 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()

【讨论】:

    【解决方案2】:

    您正在尝试将包含 Python 字典 的字符串解码为 JSON。您应该将 decode 与 JSON 一起使用,或者将 encode 与您的 Python dict 一起使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-08
      • 2016-11-14
      • 2013-06-15
      • 2021-06-11
      • 1970-01-01
      相关资源
      最近更新 更多