我正在尝试在我从网址收到的json文件中打印特定值。这就是它的外观。
{
"kind": "youtube#commentThreadListResponse",
"etag": "\"DuHzAJ-eQIiCIp7p4ldoVcVAOeY/x4kLMXLeETwGloVtDwToLvzwO-w\"",
"pageInfo": {
"totalResults": 1,
"resultsPerPage": 20
},
"items": [
{
"kind": "youtube#commentThread",
"etag": "",
"id": "",
"snippet": {
"videoId": "",
"topLevelComment": {
"kind": "youtube#comment",
"etag": "",
"id": "",
"snippet": {
"authorDisplayName": "",
"authorProfileImageUrl": "",
"authorChannelUrl": "",
"authorChannelId": {
"value": ""
},
"videoId": "",
"textDisplay": "ads",
"textOriginal": "ads",
"canRate": true,
"viewerRating": "none",
"likeCount": 0,
"publishedAt": "2018-06-12T20:17:47.000Z",
"updatedAt": "2018-06-12T20:17:47.000Z"
}
},
"canReply": true,
"totalReplyCount": 0,
"isPublic": true
}
}
]
}
这是我的代码:
import requests
url = "url to the request"
r = requests.get(url)
print(r.json())
打印整个json文件,但我希望它只打印“id”。有谁知道我能做到吗?我一直在寻找各处,摸不着头脑。
答案 0 :(得分:0)
r.json()将创建一个json对象,然后您可以像python中的字典一样进行寻址。所以,如果你做了以下
obj = r.json();
print(obj["kind"])
会给你
youtube#commentThreadListResponse"
您可以通过相同的方式在层次结构中向下导航
obj["items"][0]
将是遍历对象的有效方式
答案 1 :(得分:0)
如果要在结构中任何位置递归包含的每个字典中打印每个id
值,则需要递归遍历结构:
def print_ids(d):
if isinstance(d, list):
for elem in d:
print_ids(elem)
elif isinstance(d, dict):
for key, value in d.items():
if key == 'id':
print(f'found an id: {value}')
print_ids(value)
如果你想要一个特定的id
,一旦你可以解释如何用英语找到它,你应该能够将它转换为Python。例如,如果您希望id
内的每个字典中的每个items
,而不是其他地方的其他ids
:
d['items']
是最高级别的items
代码列表。for item in d['items']
是该列表中的每个item
字典。item['id']
是该词典的id
成员。所以:
def print_ids(d):
for item in d['items']:
print(item['id'])