Введение
Я использую эту конечную точку веб-API Spotify.Я использую параметр запроса fields
, чтобы запрашивать только те данные, которые мне нужны.
Проблема
Без какой-либо фильтрации возвращаемый из API JSON будет содержать массив с именем items
.Первый ключ в каждом объекте items
называется added_at
.Чтобы получить этот ключ, только параметр fields должен быть items(added_at)
.
В каждом объекте items
есть еще один ключ, называемый track
.Внутри track
есть массив с именем artists
.Каждая запись artists
имеет ключ с именем name
.Так что это должна быть та же ситуация, что описана во втором абзаце.Поэтому я должен получить имена артистов только с помощью items(track(artists(name)))
.
На самом деле это всегда возвращает весь массив artists
.Кажется, что селектор (name)
игнорируется.
Пример
Ответы для items(added_at, track(artists))
& items(added_at, track(artists(name)))
на самом деле одинаковы и выглядят так:
{
"items": [
{
"added_at": "2017-08-24T14:56:20Z",
"track": {
"artists": [
{
"external_urls": {
"spotify": "https://open.spotify.com/artist/4V8Sr092TqfHkfAA5fXXqG"
},
"href": "https://api.spotify.com/v1/artists/4V8Sr092TqfHkfAA5fXXqG",
"id": "4V8Sr092TqfHkfAA5fXXqG",
"name": "Luis Fonsi",
"type": "artist",
"uri": "spotify:artist:4V8Sr092TqfHkfAA5fXXqG"
},
{
"external_urls": {
"spotify": "https://open.spotify.com/artist/4VMYDCV2IEDYJArk749S6m"
},
"href": "https://api.spotify.com/v1/artists/4VMYDCV2IEDYJArk749S6m",
"id": "4VMYDCV2IEDYJArk749S6m",
"name": "Daddy Yankee",
"type": "artist",
"uri": "spotify:artist:4VMYDCV2IEDYJArk749S6m"
}
]
}
}
]
}
Вопрос
Итак, как я могу отфильтровать массив исполнителей, чтобы показывать только имена исполнителей, используя параметры запроса?Я ошибаюсь из-за предположения, что items
& added_at
можно сравнить с artists
& name
, и, следовательно, синтаксис, который я использую, неверен или я пропускаю что-то еще?
Правки
- Эти два запроса также показывают тот же ответ, что и показанные выше:
items(track.artists(name))
& items(track.artists)
.