Python 使用json模块解码json字符串时出现问题

Python 使用json模块解码json字符串时出现问题,python,json,reddit,Python,Json,Reddit,联系服务器后,我得到以下字符串作为响应 {"kind": "t2", "data": {"has_mail": null, "name": "shadyabhi", "created": 1273919273.0, "created_utc": 1273919273.0, "link_karma": 1343, "comment_karma": 301, "is_gold": false, "is_mod": false, "id": "425zf", "has_mod_mail": null}

联系服务器后,我得到以下字符串作为响应

{"kind": "t2", "data": {"has_mail": null, "name": "shadyabhi", "created": 1273919273.0, "created_utc": 1273919273.0, "link_karma": 1343, "comment_karma": 301, "is_gold": false, "is_mod": false, "id": "425zf", "has_mod_mail": null}}
在我的脚本中存储为类型“str”

现在,当我尝试使用json.dumps(mystring,sort_keys=True,indent=4)对其进行解码时,我得到了这个结果

"{\"kind\": \"t2\", \"data\": {\"has_mail\": null, \"name\": \"shadyabhi\", \"created\": 1273919273.0, \"created_utc\": 1273919273.0, \"link_karma\": 1343, \"comment_karma\": 301, \"is_gold\": false, \"is_mod\": false, \"id\": \"425zf\", \"has_mod_mail\": null}}"
应该是这样的

shadyabhi@archlinux ~ $ echo '{"kind": "t2", "data": {"has_mail": "null", "name": "shadyabhi", "created": 1273919273.0, "created_utc": 1273919273.0, "link_karma": 1343, "comment_karma": 299, "is_gold": "false", "is_mod": "false", "id": "425zf", "has_mod_mail": "null"}}' | python2 -mjson.tool
{
    "data": {
        "comment_karma": 299, 
        "created": 1273919273.0, 
        "created_utc": 1273919273.0, 
        "has_mail": "null", 
        "has_mod_mail": "null", 
        "id": "425zf", 
        "is_gold": "false", 
        "is_mod": "false", 
        "link_karma": 1343, 
        "name": "shadyabhi"
    }, 
    "kind": "t2"
}
shadyabhi@archlinux ~ $

那么,出了什么问题呢?

您需要先加载它,然后才能转储它。试试这个:

data = json.loads(returnFromWebService)

json.dumps(data, sort_keys=True, indent=4)

要添加更多细节,您将收到一个字符串,然后要求json库将其转储到一个字符串中。那没有多大意义。您首先需要做的是将数据放入一个更有意义的容器中。通过调用
loads
可以获取返回的字符串值,并将其解析到实际的Python字典中。然后,您可以将该数据传递到
转储
,该转储使用您请求的格式输出字符串。

您需要先加载它,然后才能转储它。试试这个:

data = json.loads(returnFromWebService)

json.dumps(data, sort_keys=True, indent=4)

要添加更多细节,您将收到一个字符串,然后要求json库将其转储到一个字符串中。那没有多大意义。您首先需要做的是将数据放入一个更有意义的容器中。通过调用
loads
可以获取返回的字符串值,并将其解析到实际的Python字典中。然后,您可以将该数据传递到
转储
,该转储使用您请求的格式输出一个字符串。

您可以向后处理。如果要将字符串转换为数据结构,需要使用
json.loads(字符串)
json.dumps()
用于将数据结构转换为json编码的字符串。

您可以反向使用。如果要将字符串转换为数据结构,需要使用
json.loads(字符串)
json.dumps()
用于将数据结构转换为json编码的字符串。

您应该
dump
一个对象(如字典),然后它会变成字符串,而不是反过来。。。看


使用
json.loads()

您应该
转储一个对象(如字典),然后它会变成一个字符串,而不是反过来。。。看


使用
json.loads()

您需要
json.loads
dumps
方法用于另一种方式(将对象转储为json字符串)。

您需要
json.loads
dumps
方法用于另一种方式(将对象转储为json字符串)。

Aha,在查看文档时,我想知道如何获得该对象。现在,我知道了。因此,通过使用loads,我反序列化了string.Aha,在查看文档时,我想知道如何获得该obj。现在,我知道了。因此,通过使用加载,我反序列化了字符串。