无法在Python中访问JSON响应中的节点/标记

2024-10-03 21:29:09 发布

您现在位置:Python中文网/ 问答频道 /正文

终于开始学Python了。读了关于这个话题的所有其他问题后,我觉得我是个白痴。你知道吗

我向一个开放的API发出Python请求,如下所示

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响应中的任何单个标记/节点。你知道吗


Tags: name标记importidjsonurl节点post
1条回答
网友
1楼 · 发布于 2024-10-03 21:29:09

你得到的答案是:[{"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

相关问题 更多 >