Javascript - выборка - PullRequest
       3

Javascript - выборка

1 голос
/ 25 апреля 2020

Я довольно новичок в программировании, и у меня возникла проблема.

Это мой код:

         fetch('https://feed.tunein.com/profiles/s9615/nowPlaying')
        .then(response => response.json())
        .then(data => console.log(data))

Это ответ, который я получаю:

{
  Header: { Title: 'Radio 1', Subtitle: 'BQL - Muza' },       
  Primary: {
    GuideId: 's9615',
    Image: 'http://cdn-radiotime-logos.tunein.com/s9615q.png',
    Title: 'Radio 1',
    Subtitle: 'Več dobre glasbe'
  },
  Secondary: {
    GuideId: 'o0',
    Image: 'http://cdn-radiotime-logos.tunein.com/s9615q.png',
    Title: 'BQL - Muza',
    Subtitle: 'Radio 1',
    FullScreen: true
  },
  Ads: {
    CanShowAds: true,
    CanShowPrerollAds: true,
    CanShowCompanionAds: false,
    CanShowVideoPrerollAds: false
  },
  Echo: {
    CanEcho: false,
    EchoCount: 0,
    TargetItemId: 's9615',
    Scope: 's9615',
    Url: '',
    FeedTag: 's9615'
  },
  React: {
    CanReact: false,
    TargetItemId: 's9615',
    Scope: 's9615',
    Url: 'https://api.radiotime.com/profiles/me/activities?itemToken=BgwMAAAAAAAAAAAAAAABjyUAAAEMAY8lAAABjyUAAA',
    Reactions: [ [Object], [Object], [Object], [Object], [Object] ]
  },
  Donate: { CanDonate: false },
  Share: { CanShare: true, ShareUrl: 'http://tun.in/selA9' },
  Follow: { Options: [ [Object], [Object] ] },
  Record: { CanRecord: false },
  Classification: {
    ContentType: 'music',
    IsEvent: false,
    IsOnDemand: false,
    IsFamilyContent: false,
    IsMatureContent: false,
    GenreId: 'g141'
  },
  Link: { WebUrl: 'http://www.radio1.si/' },
  Ttl: 18,
  Token: 'eyJwIjpmYWxzZSwidCI6IjIwMjAtMDQtMjRUMjM6NDA6MTAuNzIwNDY4OVoifQ'
}

Поэтому я пытаюсь извлечь текущую воспроизводимую песню, которая хранится в Secondary - Title. Так как я могу извлечь это?

Спасибо за вашу помощь, а также извините за мой английский sh, так как это не мой родной язык!

Ответы [ 2 ]

1 голос
/ 25 апреля 2020

вложенные объекты могут быть доступны следующим образом:

const exampleObject = { val0 : {val1: {val2:{val3:"val3"}}}}
const val3 = exampleObject.val0.val1.val2.val3

Итак, вы можете просто позвонить: data.Secondary.Title

const data = {
  Header: { Title: 'Radio 1', Subtitle: 'BQL - Muza' },       
  Primary: {
    GuideId: 's9615',
    Image: 'http://cdn-radiotime-logos.tunein.com/s9615q.png',
    Title: 'Radio 1',
    Subtitle: 'Več dobre glasbe'
  },
  Secondary: {
    GuideId: 'o0',
    Image: 'http://cdn-radiotime-logos.tunein.com/s9615q.png',
    Title: 'BQL - Muza',
    Subtitle: 'Radio 1',
    FullScreen: true
  },
  Ads: {
    CanShowAds: true,
    CanShowPrerollAds: true,
    CanShowCompanionAds: false,
    CanShowVideoPrerollAds: false
  },
  Echo: {
    CanEcho: false,
    EchoCount: 0,
    TargetItemId: 's9615',
    Scope: 's9615',
    Url: '',
    FeedTag: 's9615'
  },
  React: {
    CanReact: false,
    TargetItemId: 's9615',
    Scope: 's9615',
    Url: 'https://api.radiotime.com/profiles/me/activities?itemToken=BgwMAAAAAAAAAAAAAAABjyUAAAEMAY8lAAABjyUAAA',
    Reactions: [ [Object], [Object], [Object], [Object], [Object] ]
  },
  Donate: { CanDonate: false },
  Share: { CanShare: true, ShareUrl: 'http://tun.in/selA9' },
  Follow: { Options: [ [Object], [Object] ] },
  Record: { CanRecord: false },
  Classification: {
    ContentType: 'music',
    IsEvent: false,
    IsOnDemand: false,
    IsFamilyContent: false,
    IsMatureContent: false,
    GenreId: 'g141'
  },
  Link: { WebUrl: 'http://www.radio1.si/' },
  Ttl: 18,
  Token: 'eyJwIjpmYWxzZSwidCI6IjIwMjAtMDQtMjRUMjM6NDA6MTAuNzIwNDY4OVoifQ'
}

console.log(data.Secondary.Title)

Предупреждение:

Промежуточные значения NULL могут выдавать ошибки, например "cannot read property Title of undefined". Таким образом, вы должны справиться с этой ситуацией при доступе. Для вашего случая:

const title = data.Secondary?data.Secondary.Title:null
if(title){//do whatever}
else{//handle error}
1 голос
/ 25 апреля 2020

Вместо console.log(data) получите доступ к заголовку с помощью console.log(data.Secondary.Title)

Возможно, вы захотите что-то сделать с данными, а не просто зарегистрировать их в консоли.

...