извлеките все значения ключа Json

#python #json

Вопрос:

Я не продвинулся в Python Json. У меня есть эти результаты Json:

 {
    "href": "https://api.spotify.com/v1/users/wizzler/playlists",
    "items": [
        {
            "collaborative": false,
            "external_urls": {
                "spotify": "http://open.spotify.com/user/wizzler/playlists/53Y8wT46QIMz5H4WQ8O22c"
            },
            "href": "https://api.spotify.com/v1/users/wizzler/playlists/53Y8wT46QIMz5H4WQ8O22c",
            "id": "53Y8wT46QIMz5H4WQ8O22c",
            "images": [],
            "name": "Wizzlers Big Playlist",
            "owner": {
                "external_urls": {
                    "spotify": "http://open.spotify.com/user/wizzler"
                },
                "href": "https://api.spotify.com/v1/users/wizzler",
                "id": "wizzler",
                "type": "user",
                "uri": "spotify:user:wizzler"
            },
            "public": true,
            "snapshot_id": "bNLWdmhh HDsbHzhckXeDC0uyKyg4FjPI/KEsKjAE526usnz2LxwgyBoMShVL z ",
            "tracks": {
                "href": "https://api.spotify.com/v1/users/wizzler/playlists/53Y8wT46QIMz5H4WQ8O22c/tracks",
                "total": 30
            },
            "type": "playlist",
            "uri": "spotify:user:wizzler:playlist:53Y8wT46QIMz5H4WQ8O22c"
        },
        {
            "collaborative": false,
            "external_urls": {
                "spotify": "http://open.spotify.com/user/wizzlersmate/playlists/1AVZz0mBuGbCEoNRQdYQju"
            },
            "href": "https://api.spotify.com/v1/users/wizzlersmate/playlists/1AVZz0mBuGbCEoNRQdYQju",
            "id": "1AVZz0mBuGbCEoNRQdYQju",
            "images": [],
            "name": "Another Playlist",
            "owner": {
                "external_urls": {
                    "spotify": "http://open.spotify.com/user/wizzlersmate"
                },
                "href": "https://api.spotify.com/v1/users/wizzlersmate",
                "id": "wizzlersmate",
                "type": "user",
                "uri": "spotify:user:wizzlersmate"
            },
            "public": true,
            "snapshot_id": "Y0qg/IT5T02DKpw4uQKc/9RUrqQJ07hbTKyEeDRPOo9LU0g0icBrIXwVkHfQZ/aD",
            "tracks": {
                "href": "https://api.spotify.com/v1/users/wizzlersmate/playlists/1AVZz0mBuGbCEoNRQdYQju/tracks",
                "total": 58
            },
            "type": "playlist",
            "uri": "spotify:user:wizzlersmate:playlist:1AVZz0mBuGbCEoNRQdYQju"
        }
    ],
    "limit": 9,
    "next": null,
    "offset": 0,
    "previous": null,
    "total": 9
}
 

Теперь мне нужно извлечь только идентификаторы списка воспроизведения. Как это сделать?

Редактировать:

Я получаю данные Json, выполняя:

 r = requests.get(BASE_URL   'users/'   user_id   '/playlists', headers=headers)

r = r.json()
 

print(r) возвращаю мне данные Json. Когда я пытаюсь data = json.load(r)
Я получаю эти ошибки! AttributeError: 'dict' object has no attribute 'read'

Комментарии:

1. playlist_ids = [item.get('id') for item in data.get('items')] , будучи «данными», которые являются объектом JSON.

Ответ №1:

Сначала загрузите файл JSON, используя встроенную json библиотеку.

 import json
with open('path/to/json/file.json') as f:
    data = json.load(f)
 

Затем используйте понимание списка, чтобы получить только идентификаторы.

 playlist_ids = [item['id'] for item in data['items']]
 

Редактировать: Или, если вы уже проанализировали свой JSON, просто используйте понимание списка. Не делайте r = r.json() этого , это приведет к сбросу объекта запроса к данным. Установите его в какую-нибудь другую переменную, data все в порядке — data = r.json()

 playlist_ids = [item['id'] for item in data['items']]
 

Правка 2: Если вы хотите , чтобы он был только там, где указан идентификатор владельца "wizzler" , добавьте предложение if в понимание списка.

 playlist_ids = [item['id'] for item in data['items'] if item['owner']['id'] == 'wizzler']
 

Комментарии:

1. Я не могу сделать data = json.load(r) пожалуйста, посмотрите мою правку

2. Эй. Отредактировал мой ответ.

3. Я думал , вы опубликовали комментарий, в котором спрашивали меня, есть ли способ фильтровать только там, где указан идентификатор владельца "wizzler" , теперь он, похоже, удален? Если вам не нужна эта функциональность, дайте мне знать, и я откатаю свое редактирование.