2016-08-26 2 views
1

Ich kann die Elemente eines JSON-Array innerhalb eines JSON-Objekts nicht abrufen. Hier ist, was meine JSON wie folgt aussieht:

[ 
{ 
    "category":9, 
    "channels":[ 
     { 
      "id":5, 
      "title":"MYTITLE", 
      "active":true, 
      "recent":true, 
      "image":"/arts/736c1ad4-2dbe-40a6-859d-8dba89c26ec2.jpg", 
      "recent_tracks":{ 
       "vip":"https://api.xyzsite.com/recent_tracks/vip-3.json", 
       "free":"https://api.xyzsite.com/recent_tracks/free-3.json" 
      }, 
      "additional_vip_channels":[ 
       { 
        "channel_name":"vip-3a", 
        "recent_tracks_uri":"https://api.xyzsite.com/recent_tracks/vip-3a.json", 
        "streams":{ 
         "320":"http://streams.xyzsite.com/api/914/320/stream", 
         "64":"http://streams.xyzsite.com/api/914/64/stream", 
         "192":"http://streams.xyzsite.com/api/914/192/stream" 
        } 
       } 
      ], 
      "streams":{ 
       "free":"http://streams.xyzsite.com/api/31/56/stream", 
       "free_56":"http://streams.xyzsite.com/api/31/56/stream", 
       "free_128":"http://streams.xyzsite.com/api/31/128/stream", 
       "320":"http://streams.xyzsite.com/api/33/320/stream", 
       "64":"http://streams.xyzsite.com/api/33/64/stream", 
       "192":"http://streams.xyzsite.com/api/33/192/stream" 
      } 
     }, 

ich den folgenden Code verwenden, um die Werte zu erhalten:

$.getJSON('https://api.xyzsite.com/channels.json', function(response) { 
      $.each(response, function (index, value) { 
       var catId = value.category; 
       $.each(value.channels, function (index, value) {       
        XYZApp.channels.push({ 
         categoryId: catId, 
         id: value.id, 
         name: value.title, 
         image: value.image, 
         recent_tracks: { 
          vip: value.recent_tracks.vip, 
          free: value.recent_tracks.free 
         }, 
         streams: { 
          free_128: value.streams.free_128, 
          member_320: value.streams["320"], 
          member_64: value.streams["64"], 
          member_192: value.streams["192"] 
         } 
        }); 

        console.log(value.additional_vip_channels); 

       }); 

      }); 
     }). 
then ... 

Ich kann die Werte bekommen, aber ich kann nicht die additional_vip_channels Array innerhalb der .each jQuery-Funktion gelesen . Ich habe bereits versucht:

  • value.additional_vip_channels.channel_name
  • value.additional_vip_channels [0] .channel_name
  • value.additional_vip_channels [ "0"] CHANNEL_NAME

aber keiner von ihnen zu arbeiten. .

Und die Protokollausgabe ist auch hier:

enter image description here

Wie kann ich die channel_name und andere Daten in additional_vip_channels bekommen?

+1

' value.additional_vip_channels [0] .channel_name' wäre der richtige Weg. –

+0

try 'value.channels [" 0 "]. Additional_vip_channels [" 0 "]. Channel_name' –

+0

Log zeigt den erwarteten Wert an. Was ist das Problem? Versuchen Sie einzelne Werte von' additional_vip_channels' auszugeben. – itzmukeshy7

Antwort

1

Ich glaube, dass man sich nur wünschen:

channels[0]['additional_vip_channels'][0]['channel_name'] 

Ebenso das funktionieren sollte: (nur eine andere Art und Weise der Auswahl)

channels[0].additional_vip_channels[0].channel_name 

Hoffnung, dass und arbeitet hilft :)

+0

value.channels [0] .additional_vip_channels [0] .channel_name funktioniert nicht, ich bekomme: Uncaught TypeError: Kann die Eigenschaft '0' von undefined nicht lesen – burakk

+0

@burakk Hast du das andere Beispiel ausprobiert? Ich bin auf Handy, kann mich also nicht selbst testen, tut mir leid. –