Search code examples
jsonparsingios7

How to parse Json Data in iOS 7?


My Current Json data is like this :

{
    resultCount = 12;
    results =     (
                {
            amgArtistId = 468749;
            artistId = 909253;
            artistLinkUrl = "https://itunes.apple.com/us/artist/jack-johnson/id909253?uo=4";
            artistName = "Jack Johnson";
            artistType = Artist;
            primaryGenreId = 21;
            primaryGenreName = Rock;
            radioStationUrl = "https://itunes.apple.com/station/idra.909253";
            wrapperType = artist;
        },
                {
            amgArtistId = 468749;
            artistId = 909253;
            artistName = "Jack Johnson";
            artistViewUrl = "https://itunes.apple.com/us/artist/jack-johnson/id909253?uo=4";
            artworkUrl100 = "http://a4.mzstatic.com/us/r30/Music4/v4/41/df/6f/41df6fb5-d08f-5573-fb4b-a56a9b6ea0cb/UMG_cvrart_00602537868858_01_RGB72_900x810_06UMGIM25847.100x100-75.jpg";
            artworkUrl60 = "http://a1.mzstatic.com/us/r30/Music4/v4/41/df/6f/41df6fb5-d08f-5573-fb4b-a56a9b6ea0cb/UMG_cvrart_00602537868858_01_RGB72_900x810_06UMGIM25847.60x60-50.jpg";
            collectionCensoredName = "In Between Dreams";
            collectionExplicitness = notExplicit;
            collectionId = 879273552;
            collectionName = "In Between Dreams";
            collectionPrice = "9.99";
            collectionType = Album;
            collectionViewUrl = "https://itunes.apple.com/us/album/in-between-dreams/id879273552?uo=4";
            copyright = "\U00e2\U0084\U0097 2013 Jack Johnson";
            country = USA;
            currency = USD;
            primaryGenreName = Rock;
            releaseDate = "2014-05-27T07:00:00Z";
            trackCount = 16;
            wrapperType = collection;
        },
                {
            amgArtistId = 468749;
            artistId = 909253;
            artistName = "Jack Johnson";
            artistViewUrl = "https://itunes.apple.com/us/artist/jack-johnson/id909253?uo=4";
            artworkUrl100 = "http://a1.mzstatic.com/us/r30/Music4/v4/4d/b0/3e/4db03e7a-b4ee-a50d-8119-3a4fdbc0bdac/UMG_cvrart_00602537869640_01_RGB72_900x829_07UMGIM18925.100x100-75.jpg";
            artworkUrl60 = "http://a1.mzstatic.com/us/r30/Music4/v4/4d/b0/3e/4db03e7a-b4ee-a50d-8119-3a4fdbc0bdac/UMG_cvrart_00602537869640_01_RGB72_900x829_07UMGIM18925.60x60-50.jpg";
            collectionCensoredName = "Sleep Through the Static";
            collectionExplicitness = notExplicit;
            collectionId = 879716730;
            collectionName = "Sleep Through the Static";
            collectionPrice = "9.99";
            collectionType = Album;
            collectionViewUrl = "https://itunes.apple.com/us/album/sleep-through-the-static/id879716730?uo=4";
            copyright = "\U00e2\U0084\U0097 2014 Jack Johnson";
            country = USA;
            currency = USD;
            primaryGenreName = Rock;
            releaseDate = "2014-05-27T07:00:00Z";
            trackCount = 15;
            wrapperType = collection;
        },
                {
            amgArtistId = 468749;
            artistId = 909253;
            artistName = "Jack Johnson";
            artistViewUrl = "https://itunes.apple.com/us/artist/jack-johnson/id909253?uo=4";
            artworkUrl100 = "http://a1.mzstatic.com/us/r30/Music/v4/4e/55/df/4e55dfbc-bc28-b5c9-0d4a-66d2d05cfa96/UMG_cvrart_00602537869671_01_RGB72_1480x1480_10UMGIM09953.100x100-75.jpg";
            artworkUrl60 = "http://a5.mzstatic.com/us/r30/Music/v4/4e/55/df/4e55dfbc-bc28-b5c9-0d4a-66d2d05cfa96/UMG_cvrart_00602537869671_01_RGB72_1480x1480_10UMGIM09953.60x60-50.jpg";
            collectionCensoredName = "To the Sea";
            collectionExplicitness = notExplicit;
            collectionId = 879206883;
            collectionName = "To the Sea";
            collectionPrice = "9.99";
            collectionType = Album;
            collectionViewUrl = "https://itunes.apple.com/us/album/to-the-sea/id879206883?uo=4";
            copyright = "\U00e2\U0084\U0097 2014 Jack Johnson";
            country = USA;
            currency = USD;
            primaryGenreName = Rock;
            releaseDate = "2014-05-27T07:00:00Z";
            trackCount = 15;
            wrapperType = collection;
        },
                {
            amgArtistId = 468749;
            artistId = 909253;
            artistName = "Jack Johnson";
            artistViewUrl = "https://itunes.apple.com/us/artist/jack-johnson/id909253?uo=4";
            artworkUrl100 = "http://a4.mzstatic.com/us/r30/Features4/v4/e8/51/40/e8514089-6736-bf56-74f9-5cff860906f6/dj.onebzxvm.100x100-75.jpg";
            artworkUrl60 = "http://a4.mzstatic.com/us/r30/Features4/v4/e8/51/40/e8514089-6736-bf56-74f9-5cff860906f6/dj.onebzxvm.60x60-50.jpg";
            collectionCensoredName = "From Here to Now to You";
            collectionExplicitness = notExplicit;
            collectionId = 659234734;
            collectionName = "From Here to Now to You";
            collectionPrice = "9.99";
            collectionType = Album;
            collectionViewUrl = "https://itunes.apple.com/us/album/from-here-to-now-to-you/id659234734?uo=4";
            copyright = "\U00e2\U0084\U0097 2013 Jack Johnson";
            country = USA;
            currency = USD;
            primaryGenreName = Rock;
            releaseDate = "2013-09-17T07:00:00Z";
            trackCount = 12;
            wrapperType = collection;
        },
                {
            amgArtistId = 468749;
            artistId = 909253;
            artistName = "Jack Johnson";
            artistViewUrl = "https://itunes.apple.com/us/artist/jack-johnson/id909253?uo=4";
            artworkUrl100 = "http://a4.mzstatic.com/us/r30/Music/1a/34/a1/mzi.clhpvscw.100x100-75.jpg";
            artworkUrl60 = "http://a3.mzstatic.com/us/r30/Music/1a/34/a1/mzi.clhpvscw.60x60-50.jpg";
            collectionCensoredName = "En Concert (Bonus Track Version) [Live]";
            collectionExplicitness = notExplicit;
            collectionId = 333365555;
            collectionName = "En Concert (Bonus Track Version) [Live]";
            collectionPrice = "9.99";
            collectionType = Album;
            collectionViewUrl = "https://itunes.apple.com/us/album/en-concert-bonus-track-version/id333365555?uo=4";
            copyright = "\U00e2\U0084\U0097 2009 Jack Johnson";
            country = USA;
            currency = USD;
            primaryGenreName = Rock;
            releaseDate = "2009-10-26T07:00:00Z";
            trackCount = 21;
            wrapperType = collection;
        },
                {
            amgArtistId = 5723;
            artistId = 78500;
            artistLinkUrl = "https://itunes.apple.com/us/artist/u2/id78500?uo=4";
            artistName = U2;
            artistType = Artist;
            primaryGenreId = 21;
            primaryGenreName = Rock;
            radioStationUrl = "https://itunes.apple.com/station/idra.78500";
            wrapperType = artist;
        },
                {
            amgArtistId = 5723;
            artistId = 78500;
            artistName = U2;
            artistViewUrl = "https://itunes.apple.com/us/artist/u2/id78500?uo=4";
            artworkUrl100 = "http://a4.mzstatic.com/us/r30/Features/64/ca/7a/dj.aibugkmk.100x100-75.jpg";
            artworkUrl60 = "http://a5.mzstatic.com/us/r30/Features/64/ca/7a/dj.aibugkmk.60x60-50.jpg";
            collectionCensoredName = "U218 Singles (Deluxe Version)";
            collectionExplicitness = notExplicit;
            collectionId = 205155692;
            collectionName = "U218 Singles (Deluxe Version)";
            collectionPrice = "14.99";
            collectionType = Album;
            collectionViewUrl = "https://itunes.apple.com/us/album/u218-singles-deluxe-version/id205155692?uo=4";
            copyright = "\U00e2\U0084\U0097 2006 Universal-Island Records Ltd.";
            country = USA;
            currency = USD;
            primaryGenreName = Rock;
            releaseDate = "2006-11-20T08:00:00Z";
            trackCount = 28;
            wrapperType = collection;
        },
                {
            amgArtistId = 5723;
            artistId = 78500;
            artistName = U2;
            artistViewUrl = "https://itunes.apple.com/us/artist/u2/id78500?uo=4";
            artworkUrl100 = "http://a4.mzstatic.com/us/r30/Music/82/b4/94/mzi.wnujigmg.100x100-75.jpg";
            artworkUrl60 = "http://a3.mzstatic.com/us/r30/Music/82/b4/94/mzi.wnujigmg.60x60-50.jpg";
            collectionCensoredName = "No Line On the Horizon";
            collectionExplicitness = notExplicit;
            collectionId = 305352505;
            collectionName = "No Line On the Horizon";
            collectionPrice = "9.99";
            collectionType = Album;
            collectionViewUrl = "https://itunes.apple.com/us/album/no-line-on-the-horizon/id305352505?uo=4";
            copyright = "\U00e2\U0084\U0097 2009 Universal-Island Records Ltd. under exclusive license to Mercury Records Limited in the UK, Interscope Records in the US and Universal Music Group for the rest of the world.";
            country = USA;
            currency = USD;
            primaryGenreName = Rock;
            releaseDate = "2009-03-03T08:00:00Z";
            trackCount = 12;
            wrapperType = collection;
        },
                {
            amgArtistId = 5723;
            artistId = 78500;
            artistName = U2;
            artistViewUrl = "https://itunes.apple.com/us/artist/u2/id78500?uo=4";
            artworkUrl100 = "http://a4.mzstatic.com/us/r30/Features/af/9c/e1/dj.cothgbwe.100x100-75.jpg";
            artworkUrl60 = "http://a3.mzstatic.com/us/r30/Features/af/9c/e1/dj.cothgbwe.60x60-50.jpg";
            collectionCensoredName = "How to Dismantle an Atomic Bomb";
            collectionExplicitness = notExplicit;
            collectionId = 29600233;
            collectionName = "How to Dismantle an Atomic Bomb";
            collectionPrice = "9.99";
            collectionType = Album;
            collectionViewUrl = "https://itunes.apple.com/us/album/how-to-dismantle-atomic-bomb/id29600233?uo=4";
            copyright = "\U00e2\U0084\U0097 2004 Universal-Island Records Ltd.";
            country = USA;
            currency = USD;
            primaryGenreName = Rock;
            releaseDate = "2004-11-22T08:00:00Z";
            trackCount = 11;
            wrapperType = collection;
        },
                {
            amgArtistId = 5723;
            artistId = 78500;
            artistName = U2;
            artistViewUrl = "https://itunes.apple.com/us/artist/u2/id78500?uo=4";
            artworkUrl100 = "http://a1.mzstatic.com/us/r30/Music/v4/94/eb/dc/94ebdc5f-2b8a-c123-0d83-3334c27bc90d/dj.jrlmqsuc.100x100-75.jpg";
            artworkUrl60 = "http://a4.mzstatic.com/us/r30/Music/v4/94/eb/dc/94ebdc5f-2b8a-c123-0d83-3334c27bc90d/dj.jrlmqsuc.60x60-50.jpg";
            collectionCensoredName = "The Joshua Tree (Remastered)";
            collectionExplicitness = notExplicit;
            collectionId = 267826054;
            collectionName = "The Joshua Tree (Remastered)";
            collectionPrice = "9.99";
            collectionType = Album;
            collectionViewUrl = "https://itunes.apple.com/us/album/the-joshua-tree-remastered/id267826054?uo=4";
            copyright = "\U00e2\U0084\U0097 2007 Universal-Island Records Ltd. under exclusive licence to Mercury Records Limited";
            country = USA;
            currency = USD;
            primaryGenreName = Rock;
            releaseDate = "2007-11-20T08:00:00Z";
            trackCount = 11;
            wrapperType = collection;
        },
                {
            amgArtistId = 5723;
            artistId = 78500;
            artistName = U2;
            artistViewUrl = "https://itunes.apple.com/us/artist/u2/id78500?uo=4";
            artworkUrl100 = "http://a1.mzstatic.com/us/r30/Music/b6/b4/df/mzi.rpwpimbq.100x100-75.jpg";
            artworkUrl60 = "http://a1.mzstatic.com/us/r30/Music/b6/b4/df/mzi.rpwpimbq.60x60-50.jpg";
            collectionCensoredName = "The Best of 1980-1990";
            collectionExplicitness = notExplicit;
            collectionId = 280046709;
            collectionName = "The Best of 1980-1990";
            collectionPrice = "9.99";
            collectionType = Album;
            collectionViewUrl = "https://itunes.apple.com/us/album/the-best-of-1980-1990/id280046709?uo=4";
            copyright = "\U00e2\U0084\U0097 1998 Universal-Island Records Ltd.";
            country = USA;
            currency = USD;
            primaryGenreName = Rock;
            releaseDate = "2008-05-13T07:00:00Z";
            trackCount = 15;
            wrapperType = collection;
        }
    );
}

How can I parse this data with NSJSONSerialization ?


Solution

  • NSError *jsonParsingError = nil;
    NSDictionary *parsedJson = [NSJSONSerialization JSONObjectWithData:response options:0 error:&jsonParsingError];
    

    Now you can access json elements by using keys in the json response. For example to get the results count.

    [parsedJson objectForKey:@"resultCount"];
    

    Update: In your json string result is an array. So After serialization you'll get array of dictionaries. So to get a property like 'amgArtistId', first you'll have to get the value for the results key from the dictionary, which will have an array of (dictionaries). Then you can loop that array or access using index to individual dictionaries.

    NSArray *results = [parsedJson objectForKey:@"results"];
    NSString *amgArtistId = [[results firstObject] objectForKey:@"amgArtistId"];
    

    This way you can get other elements as well. You don't have to serialize each and every element for that. Serializing json string once is enough.