联系服务器后,我得到以下字符串作为响应
{"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 ~ $
那么,这是怎么回事?
答案 0 :(得分:2)
您需要在转储之前加载它。试试这个:
data = json.loads(returnFromWebService)
json.dumps(data, sort_keys=True, indent=4)
要添加更多细节 - 您将收到一个字符串,然后要求json库将其转储到字符串中。这没有多大意义。首先需要做的是将数据放入更有意义的容器中。通过调用loads
,您可以获取返回的字符串值并将其解析为实际的Python字典。然后,您可以将该数据传递给dumps
,{{1}}使用您请求的格式输出字符串。
答案 1 :(得分:1)
你有事情倒退。如果要将字符串转换为数据结构,则需要使用json.loads(thestring)
。 json.dumps()
用于将数据结构转换为json编码的字符串。
答案 2 :(得分:1)
你应该dump
一个对象(比如字典)然后变成一个字符串,而不是反过来......见here。
改为使用json.loads()
。
答案 3 :(得分:1)
你想要json.loads
。 dumps
方法用于另一种方式(将对象转储到json字符串)。