【问题标题】:python json loads and unicodepython json加载和unicode
【发布时间】:2010-03-06 12:54:33
【问题描述】:

我有以下情况,我得到了 UTF-8 编码的 HTTP 响应的结果。我想加载响应内容(JSON)。但是我不知道为什么我必须做 2 json.loads 才能获得最终名单:

result = urllib2.urlopen(req).read()
print result, type(result)
#=> "[{\"pk\": 66, \"model\": \"core.job\", \"fields\": {\"customer\": 1, \"created_ts\": \"2010-03-06 06:33:36\", \"log\": 66, \"process\": 1, \"ended_ts\": null, \"state\": \"PENDING\", \"started_ts\": null}}]" <type 'str'>
ret = json.loads(result)
print ret , type(ret)
#=> [{"pk": 66, "model": "core.job", "fields": {"customer": 1, "created_ts": "2010-03-06 06:33:36", "log": 66, "process": 1, "ended_ts": null, "state": "PENDING", "started_ts": null}}] <type 'unicode'>
ret = json.loads(ret)
print ret , type(ret)
#=>[{u'pk': 66, u'model': u'core.job', u'fields': {u'customer': 1, u'created_ts': u'2010-03-06 06:33:36', u'log': 66, u'process': 1, u'ended_ts': None, u'state': u'PENDING', u'started_ts': None}}] <type 'list'>

有什么想法吗?

【问题讨论】:

    标签: python json unicode utf-8 simplejson


    【解决方案1】:

    看起来 JSON 字符串的 repr() 是返回的,而不是 JSON 字符串本身。所以,服务器出了点问题。

    【讨论】:

    • 我怎样才能确定你的假设?
    • 如果您检查原始字符串,您会注意到它的开头和结尾都有引号,并且内部引号被转义。这不是 JSON 字符串的样子。您可以通过在 JSON 字符串上打印 repr() 的结果来复制效果。
    猜你喜欢
    • 1970-01-01
    • 2020-02-15
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    • 2011-04-10
    • 1970-01-01
    • 1970-01-01
    • 2013-06-30
    相关资源
    最近更新 更多