2017-08-02 28 views
2

试图最终学习Python。读过关于这个话题的所有其他问题后,我扣除了我是一个白痴。无法访问Python中的JSON响应中的节点/标签

我正在做一个Python请求开放的API像下面

import requests 
import json 

url = 'http://api.turfgame.com/v4/users' 
payload = [{"name": "tbone"}] 
headers = {'content-type': 'application/json'} 

r = requests.post(url, data=json.dumps(payload), headers=headers) 

这一切顺利的话,我可以打印响应

print r.text 

然而,这是当我想访问某些标签/节点在我遇到的墙壁中。输出是

[{"country":"se","medals":[34,54,13,5,46,28,16,6],"zones":[323,7577,14606],"pointsPerHour":21,"points":21809,"blocktime":17,"taken":2290,"name":"tbone","totalPoints":347388,"rank":30,"id":95195,"place":1931,"uniqueZonesTaken":269,"region":{"name":"Stockholm","id":141}}] 

而且我试着

rj = r.json() 
print rj['name'] 

但是,这只是给了我

Traceback (most recent call last): 
File "post.py", line 16, in <module> 
print rj['name'] 
TypeError: list indices must be integers, not str 

我不能让我围绕着如何获取任何个人标签/节点头JSON响应。

回答

1

你得到的答复:[{"country":"se",..."region":{"name":"Stockholm","id":141}}] 是JSON对象的列表(注意[]周围的字典)。

所以,让你的对象,你要做的:

rj = r.json() 
print rj[0]['name'] # the [0] to indicate you take the first element of your list