Lalit Paliwal
Lalit Paliwal

Reputation: 41

Reading JSON array

I am working on iphone app. Here I am reading an JSON array I have get its values into array the values I get in the following format :

Array : {
global =     {
    players =         {
        1 = "John Doe, A school";
        10 = "Jonathan Doe, Another school";
        2 = "Joe Doe, Another school";
        3 = "Jane Doe, A school";
        4 = "Jay Doe, Another school";
        5 = "Jimmy Doe, A school";
        6 = "Jeremy Doe, Another school";
        7 = "Johnny Doe, A school";
        8 = "Jeremiah Doe, Another school";
        9 = "Jennifer Doe, A school";
    };
    schools =         {
        1 = "A school";
        2 = "Another school";
        3 = "The school";
        4 = "The other school";
        5 = "That school";
    };
    text = "A dynamic text that needs to be displayed to the player.";
};

Now my problem is that How can I read each part of global? after reading that How can I read schools ? etc...

Upvotes: 0

Views: 322

Answers (5)

Nikshep
Nikshep

Reputation: 2115

Just do this

for (var i in global ) {
  for(var j in global [i].schools ){
    alert(global [i].schools[j]);
  }                   
}

Upvotes: 0

cancerian
cancerian

Reputation: 942

use JSONKit. its the newer and better version of SBJson

Upvotes: 1

Simon Whitaker
Simon Whitaker

Reputation: 20566

SBJson is another good Objective-C JSON library. It will parse the JSON into nested NSArray and NSDictionary objects. Canonical usage would be something like:

#import "SBJson.h"

NSString *jsonString = @"{
    'name': 'Simon', 
    'address': {'street': '1 High Street', 'town': 'Anytown'}
}";
NSDictionary *jsonData = [jsonString JSONValue];

NSLog(@"Simon lives in %@", [jsonData valueForKeyPath:@"address.town"]);

Output:

Simon lives in Anytown

As an aside, rather than using dictionaries (denoted by the curly brackets and key:value data form), if you want a list of ordered data (e.g. players in your example) you can just use a list (square brackets enclosing a list of values). So your data becomes:

data: {
    global: {
        players: [
            "John Doe, A school";
            "Joe Doe, Another school";
            "Jane Doe, A school";
            "Jay Doe, Another school";
            "Jimmy Doe, A school";
            "Jeremy Doe, Another school";
            "Johnny Doe, A school";
            "Jeremiah Doe, Another school";
            "Jennifer Doe, A school";
            "Jonathan Doe, Another school";
        ]
        schools: [
            "A school";
            "Another school";
            "The school";
            "The other school";
            "That school";
        ],
        text: "A dynamic text that needs to be displayed to the player.";
    }
};

Upvotes: 0

Abhinit
Abhinit

Reputation: 1016

Look at this question Comparison of JSON Parser for Objective-C (JSON Framework, YAJL, TouchJSON, etc)

It has a list of almost every major JSON parser out there. A JSON parser would convert the JSON to an array/dictionary and let you use objectForKey and objectAtIndex methods to access the structure.

Upvotes: 2

Anton
Anton

Reputation: 2297

Use TouchJSON. It's very easy to use and has a comprehensive documentation.

Upvotes: 0

Related Questions