3

I have some JSON data below:

{
"tracks": [
    {
        "album": {
            "released": "2013",
            "href": "spotify:album:3qGeRY1wt4rrLIt1YuSwHR",
            "name": "The Marshall Mathers LP2 (Deluxe)",
            "availability": {
                "territories": "AD AR AT AU BE BG BO BR CH CL CO CR CY CZ DE DK DO EC EE ES FI FR GB GR GT HK HN HR HU IE IS IT LI LT LU LV MC MT MY NI NL NO NZ PA PE PH PL PT PY RO SE SG SI SK SV TR TW UY"
            }
        },
        "name": "The Monster",
        "popularity": "0.94",
        "external-ids": [
            {
                "type": "isrc",
                "id": "USUM71314082" <-- I want this value
            }
        ],
        "length": 250.188,
        "href": "spotify:track:5U8hKxSaDXB8cVeLFQjvwx",
        "artists": [
            {
                "href": "spotify:artist:7dGJo4pcD2V6oG8kP0tJRR",
                "name": "Eminem"
            },
            {
                "href": "spotify:artist:5pKCCKE2ajJHZ9KAiaK11H",
                "name": "Rihanna"
            }
        ],
        "track-number": "12"
    },
    ...
]}

I am able to take out other values like album name, release date etc, but not the external-ids id. these are the two ways i have tried in my angular template:

<div class="panel panel-success" ng-repeat="track in something.tracks">
    <p>Track name: {{ track.name }}</p>
    <p>Album release date: {{ track.album.released }}</p>
    <p>Spotify id: {{track.external-ids[0].id}} </p>

    <!-- <span ng-repeat="obj in track.external-ids">  
            <p>Spotify id: {{ obj.id }}</p>
        </span> -->

</div>

those are the two solutions i came up with but neither seem to work. The first one (not commented out) returns 0, the second one doesn't display the "spotify id:" line at all.

Does anybody know how to do this? it seems pretty straightforward but i just cant seem to get my head around it. Thanks.

1 Answer 1

4

To access a property that contains a dash you need to use the bracket notation:

<p>Spotify id: {{track['external-ids'][0].id}} </p>

Otherwise the parser will interpret is as the subtraction operator:

track.external - ids[0].id

Demo: http://plnkr.co/edit/gIyXg8y0Pn1TuK0uI6qD?p=preview

Sign up to request clarification or add additional context in comments.

2 Comments

Thanks a lot, that worked. It didn't cross my mind that the dash would be breaking it.
If instead of just picking one result we had a list of id's how can we list them all?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.