0

I'm trying to parse some JSON data for an application I'm building, but I can't seem to get it to work. I have used this code before, but it isn't working on this API. Here's my code.

<?php
    $json_string = file_get_contents("http://api.genius.com/songs/542383?access_token=MY_ACCESS_TOKEN"); 
    $data = json_decode($json_string, true);
    foreach($data["response"]['song'] as $item) {
        echo $row['description']['children'];
    }
?>

I've quoted the JSON at the end of the question. It's valid according to http://jsonlint.com.

I've also tried using this code, but with no luck.

<?php
$link = "http://api.genius.com/songs/542383?access_token=MY_ACCESS_TOKEN";
$json = file_get_contents($link);
$obj = json_decode($json);

echo $obj->response->song[0]->description->children;    
?>

I'm sure it's something small, but I can't figure it out.


This is the JSON:

{
   "meta":{
      "status":200
   },
   "response":{
      "song":{
         "annotation_count":24,
         "api_path":"/songs/222926",
         "description":{
            "dom":{
               "tag":"root",
               "children":[
                  {
                     "tag":"p",
                     "children":[
                        "As the debut UK single from ",
                        {
                           "tag":"a",
                           "attributes":{
                              "href":"http://genius.com/artists/The-vamps"
                           },
                           "data":{
                              "api_path":"/artists/72916"
                           },
                           "children":[
                              "The Vamps"
                           ]
                        },
                        ", “Can We Dance?” introduces audiences to the group’s fun, catchy sound. The song was featured on the band’s debut album, appropriately named ",
                        {
                           "tag":"a",
                           "attributes":{
                              "href":"http://genius.com/albums/the-vamps/meet-the-vamps"
                           },
                           "data":{
                              "api_path":"/albums/94381"
                           },
                           "children":[
                              {
                                 "tag":"em",
                                 "children":[
                                    "Meet The Vamps"
                                 ]
                              },
                              ","
                           ]
                        },
                        " and was released September 29th, 2013 in the boys' native United Kingdom."
                     ]
                  },
                  "",
                  {
                     "tag":"p",
                     "children":[
                        "In the song, Brad, James, Connor, and Tristan find themselves at a party and are drawn to one particular girl. They’re desperate for their crush to notice them, and use the party as an excuse to flirt, being that they’re drunk and could easily ask her to dance."
                     ]
                  }
               ]
            }
         },
         "embed_content":"<div id='rg_embed_link_222926' class='rg_embed_link' data-song-id='222926'>Read <a href='http://genius.com/The-vamps-can-we-dance-lyrics'>“Can We Dance?” by The Vamps</a> on Genius</div> <script crossorigin src='//genius.com/songs/222926/embed.js'></script>",
         "featured_video":false,
         "full_title":"Can We Dance? by The Vamps",
         "header_image_thumbnail_url":"https://images.genius.com/b3a99070078ce4c6d98fc3dc5ebdacb9.300x300x1.jpg",
         "header_image_url":"https://images.genius.com/b3a99070078ce4c6d98fc3dc5ebdacb9.618x617x1.jpg",
         "id":222926,
         "media":[
            {
               "type":"audio",
               "provider":"spotify",
               "url":"https://open.spotify.com/track/5plDUEEu4r5YEzHL8IhOs1",
               "native_uri":"spotify:track:5plDUEEu4r5YEzHL8IhOs1"
            },
            {
               "type":"video",
               "provider":"youtube",
               "url":"http://www.youtube.com/watch?v=UqSww10eeKw",
               "start":8
            }
         ],
         "path":"/The-vamps-can-we-dance-lyrics",
         "pyongs_count":18,
         "recording_location":null,
         "release_date":null,
         "song_art_image_url":"https://images.genius.com/b3a99070078ce4c6d98fc3dc5ebdacb9.618x617x1.jpg",
         "stats":{
            "accepted_annotations":1,
            "contributors":13,
            "hot":false,
            "iq_earners":13,
            "pageviews":10990,
            "transcribers":1,
            "unreviewed_annotations":22,
            "verified_annotations":0
         },
         "title":"Can We Dance?",
         "url":"http://genius.com/The-vamps-can-we-dance-lyrics",
         "current_user_metadata":{
            "interactions":{
               "pyong":false,
               "following":false
            },
            "relationships":{

            },
            "permissions":[
               "see_pageviews",
               "create_comment"
            ]
         },
         "album":{
            "api_path":"/albums/94381",
            "cover_art_url":"https://images.genius.com/b3a99070078ce4c6d98fc3dc5ebdacb9.618x617x1.jpg",
            "id":94381,
            "name":"Meet The  Vamps",
            "url":"http://genius.com/albums/The-vamps/Meet-the-vamps",
            "artist":{
               "api_path":"/artists/72916",
               "header_image_url":"https://images.genius.com/4575ab8cdc593ab6d4427716b28bda13.525x350x1.jpg",
               "id":72916,
               "image_url":"https://images.genius.com/4575ab8cdc593ab6d4427716b28bda13.525x350x1.jpg",
               "is_verified":false,
               "name":"The Vamps",
               "url":"http://genius.com/artists/The-vamps"
            }
         },
         "custom_performances":[

         ],
         "description_annotation":{
            "_type":"referent",
            "annotator_id":1620931,
            "annotator_login":"BTMN_Gaming",
            "api_path":"/referents/3664740",
            "classification":"accepted",
            "fragment":"Can We Dance?",
            "id":3664740,
            "is_description":true,
            "path":"/3664740/The-vamps-can-we-dance/Can-we-dance",
            "range":{
               "content":"Can We Dance?"
            },
            "song_id":222926,
            "url":"http://genius.com/3664740/The-vamps-can-we-dance/Can-we-dance",
            "verified_annotator_ids":[

            ],
            "annotatable":{
               "api_path":"/songs/222926",
               "client_timestamps":{
                  "updated_by_human_at":1464755813,
                  "lyrics_updated_at":1464755813
               },
               "context":"The Vamps",
               "id":222926,
               "image_url":"https://images.genius.com/b3a99070078ce4c6d98fc3dc5ebdacb9.618x617x1.jpg",
               "link_title":"Can We Dance? by The Vamps",
               "title":"Can We Dance?",
               "type":"Song",
               "url":"http://genius.com/The-vamps-can-we-dance-lyrics"
            },
            "annotations":[
               {
                  "api_path":"/annotations/3664740",
                  "body":{
                     "dom":{
                        "tag":"root",
                        "children":[
                           {
                              "tag":"p",
                              "children":[
                                 "As the debut UK single from ",
                                 {
                                    "tag":"a",
                                    "attributes":{
                                       "href":"http://genius.com/artists/The-vamps"
                                    },
                                    "data":{
                                       "api_path":"/artists/72916"
                                    },
                                    "children":[
                                       "The Vamps"
                                    ]
                                 },
                                 ", “Can We Dance?” introduces audiences to the group’s fun, catchy sound. The song was featured on the band’s debut album, appropriately named ",
                                 {
                                    "tag":"a",
                                    "attributes":{
                                       "href":"http://genius.com/albums/the-vamps/meet-the-vamps"
                                    },
                                    "data":{
                                       "api_path":"/albums/94381"
                                    },
                                    "children":[
                                       {
                                          "tag":"em",
                                          "children":[
                                             "Meet The Vamps"
                                          ]
                                       },
                                       ","
                                    ]
                                 },
                                 " and was released September 29th, 2013 in the boys' native United Kingdom."
                              ]
                           },
                           "",
                           {
                              "tag":"p",
                              "children":[
                                 "In the song, Brad, James, Connor, and Tristan find themselves at a party and are drawn to one particular girl. They’re desperate for their crush to notice them, and use the party as an excuse to flirt, being that they’re drunk and could easily ask her to dance."
                              ]
                           }
                        ]
                     }
                  },
                  "comment_count":0,
                  "community":true,
                  "id":3664740,
                  "pinned":false,
                  "share_url":"http://genius.com/3664740",
                  "state":"accepted",
                  "url":"http://genius.com/3664740/The-vamps-can-we-dance/Can-we-dance",
                  "verified":false,
                  "verified?":false,
                  "votes_total":2,
                  "current_user_metadata":{
                     "interactions":{
                        "vote":null,
                        "cosign":false,
                        "pyong":false
                     },
                     "permissions":[
                        "create_comment"
                     ]
                  },
                  "authors":[
                     {
                        "attribution":0.9484536082474228,
                        "pinned_role":null,
                        "user":{
                           "api_path":"/users/1873201",
                           "avatar":{
                              "tiny":{
                                 "url":"https://images.rapgenius.com/avatars/tiny/35d9463bfb54e2d3d9fb261fc6ef2174",
                                 "bounding_box":{
                                    "width":16,
                                    "height":16
                                 }
                              },
                              "thumb":{
                                 "url":"https://images.rapgenius.com/avatars/thumb/35d9463bfb54e2d3d9fb261fc6ef2174",
                                 "bounding_box":{
                                    "width":32,
                                    "height":32
                                 }
                              },
                              "small":{
                                 "url":"https://images.rapgenius.com/avatars/small/35d9463bfb54e2d3d9fb261fc6ef2174",
                                 "bounding_box":{
                                    "width":100,
                                    "height":100
                                 }
                              },
                              "medium":{
                                 "url":"https://images.rapgenius.com/avatars/medium/35d9463bfb54e2d3d9fb261fc6ef2174",
                                 "bounding_box":{
                                    "width":300,
                                    "height":400
                                 }
                              }
                           },
                           "header_image_url":"https://images.rapgenius.com/avatars/medium/35d9463bfb54e2d3d9fb261fc6ef2174",
                           "human_readable_role_for_display":"Editor",
                           "id":1873201,
                           "iq":18561,
                           "login":"VinylKilljoy_MCR",
                           "name":"VinylZombie_MCR",
                           "role_for_display":"editor",
                           "url":"http://genius.com/VinylKilljoy_MCR"
                        }
                     },
                     {
                        "attribution":0.051546391752577324,
                        "pinned_role":null,
                        "user":{
                           "api_path":"/users/1620931",
                           "avatar":{
                              "tiny":{
                                 "url":"https://assets.genius.com/images/default_avatar_16.png?1465401450",
                                 "bounding_box":{
                                    "width":16,
                                    "height":16
                                 }
                              },
                              "thumb":{
                                 "url":"https://assets.genius.com/images/default_avatar_32.png?1465401450",
                                 "bounding_box":{
                                    "width":32,
                                    "height":32
                                 }
                              },
                              "small":{
                                 "url":"https://assets.genius.com/images/default_avatar_100.png?1465401450",
                                 "bounding_box":{
                                    "width":100,
                                    "height":100
                                 }
                              },
                              "medium":{
                                 "url":"https://assets.genius.com/images/default_avatar_300.png?1465401450",
                                 "bounding_box":{
                                    "width":300,
                                    "height":400
                                 }
                              }
                           },
                           "header_image_url":"https://assets.genius.com/images/default_avatar_300.png?1465401450",
                           "human_readable_role_for_display":null,
                           "id":1620931,
                           "iq":38,
                           "login":"BTMN_Gaming",
                           "name":"BTMN_Gaming",
                           "role_for_display":null,
                           "url":"http://genius.com/BTMN_Gaming"
                        }
                     }
                  ],
                  "cosigned_by":[

                  ],
                  "verified_by":null
               }
            ]
         },
         "featured_artists":[

         ],
         "primary_artist":{
            "api_path":"/artists/72916",
            "header_image_url":"https://images.genius.com/4575ab8cdc593ab6d4427716b28bda13.525x350x1.jpg",
            "id":72916,
            "image_url":"https://images.genius.com/4575ab8cdc593ab6d4427716b28bda13.525x350x1.jpg",
            "is_verified":false,
            "name":"The Vamps",
            "url":"http://genius.com/artists/The-vamps"
         },
         "producer_artists":[

         ],
         "song_relationships":[
            {
               "type":"samples",
               "songs":[

               ]
            },
            {
               "type":"sampled_in",
               "songs":[

               ]
            },
            {
               "type":"interpolates",
               "songs":[

               ]
            },
            {
               "type":"interpolated_by",
               "songs":[

               ]
            },
            {
               "type":"cover_of",
               "songs":[

               ]
            },
            {
               "type":"covered_by",
               "songs":[

               ]
            },
            {
               "type":"remix_of",
               "songs":[

               ]
            },
            {
               "type":"remixed_by",
               "songs":[

               ]
            },
            {
               "type":"live_version_of",
               "songs":[

               ]
            },
            {
               "type":"performed_live_as",
               "songs":[

               ]
            }
         ],
         "verified_annotations_by":[

         ],
         "verified_lyrics_by":[

         ],
         "writer_artists":[

         ]
      }
   }
}
1
  • The content of your question must be in your question, not just linked. I've moved the JSON into the question for you. Commented Jun 8, 2016 at 17:42

2 Answers 2

1

You could try looping through the Data first because the structure of the data is a little more complex than you can access using $songs[0]. Try this instead:

    <?php

        $link           = "http://api.genius.com/songs/542383?access_token=HOlDPArpVrb8ljFKUN6FyBjSG--hb0QHv9qFEccs2gNdCr62W0pJuikv1RoCASgY";
        $json           = file_get_contents($link);
        $obj            = json_decode($json);
        $arrChildren    = $obj->response->song->description->dom->children;

        foreach($arrChildren as $strKey=>$objData){

            if (isset($objData->children) && @is_string($objData->children)) {
                echo $objData->children . "<br />";
            }else if (isset($objData->children) && is_array($objData->children)) {
                foreach ($objData->children as $iKey => $objNested) {
                    if (is_string($objNested)) {
                        echo $objNested . "<br />";
                    }
                    else {
                        if (is_object($objNested)) {
                            var_dump($objNested);
                            echo "<br /><br />";
                        }
                    }
                }
            }

        }

        var_dump($arrChildren);

OUTPUT::

        Taylor Swift unveiled a little snippet of this song in her new Diet Coke ad.

        object(stdClass)[7]
          public 'tag' => string 'a' (length=1)
          public 'attributes' =>
            object(stdClass)[8]
              public 'href' => string 'https://twitter.com/taylorswift13/status/522413036729298944' (length=59)
              public 'rel' => string 'nofollow' (length=8)
          public 'children' =>
            array (size=1)
              0 => string 'https://twitter.com/taylorswift13/status/522413036729298944' (length=59)


        The song works as an advice to a guy who wants to get a girl back. She suggests better tactics than the ones her former lovers seemed to have used on her, described in songs like

            object(stdClass)[10]
              public 'tag' => string 'a' (length=1)
              public 'attributes' =>
                object(stdClass)[11]
                  public 'href' => string 'http://genius.com/Taylor-swift-we-are-never-ever-getting-back-together-lyrics' (length=77)
              public 'data' =>
                object(stdClass)[12]
                  public 'api_path' => string '/songs/84880' (length=12)
              public 'children' =>
                array (size=1)
                  0 => string '“We Are Never Ever Getting Back Together”' (length=45)


                        .
            array (size=5)
              0 =>
                object(stdClass)[5]
                  public 'tag' => string 'p' (length=1)
                  public 'children' =>
                    array (size=1)
                      0 => string 'Taylor Swift unveiled a little snippet of this song in her new Diet Coke ad.' (length=76)
              1 => string '' (length=0)
              2 =>
                object(stdClass)[6]
                  public 'tag' => string 'p' (length=1)
                  public 'children' =>
                    array (size=1)
                      0 =>
                        object(stdClass)[7]
                          ...
              3 => string '' (length=0)
              4 =>
                object(stdClass)[9]
                  public 'tag' => string 'p' (length=1)
                  public 'children' =>
                    array (size=3)
                      0 => string 'The song works as an advice to a guy who wants to get a girl back. She suggests better tactics than the ones her former lovers seemed to have used on her, described in songs like ' (length=179)
                      1 =>
                        object(stdClass)[10]
                          ...
                      2 => string '.' (length=1)
Sign up to request clarification or add additional context in comments.

Comments

0

Check line 4 when you use:

echo $row['description']['children']; 

it must be

echo $item['description']['children'];

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.