Evan
Evan

Reputation: 1737

Parsing JSON Array in iOS with JSONKit - array with no tag for ObjectForKey?

I am trying to parse a JSON array returned by a RESTful web API that looks similiar to the following (using JSONKit):

[ { "DateCreated" : "/Date(1320296400000)/",
    "ID" : 1,
    "Summary" : "Summary 1",
    "Title" : "Title 1",
    "URL" : "URL 1"
  },
  { "DateCreated" : "/Date(1320296400000)/",
    "ID" : 2,
    "Summary" : "Summary 2",
    "Title" : "Title 2",
    "URL" : "URL 2"
  }
]

The JSON I have worked with the the past usually had a parent element, for example news:{{node1},{node2}}, that would allow me to extract that node from the JSON response, like this:

NSString *response = [request responseString];
NSDictionary *deserializedData = [response objectFromJSONString];
NSArray *arrNews = [deserializedData objectForKey:@"news"];

In my JSON, no such node exists, it is simply a raw array. How do I go about pulling this into an NSArray (or something I can hook into a UITableView)?

Upvotes: 5

Views: 7819

Answers (2)

Ignacio Inglese
Ignacio Inglese

Reputation: 2605

From the looks of your JSON data, it looks like your deserializedData should already be a JKArray filled with JKDictionary objects.

Have you tried accessing it like an array ?

for (NSDictionary * dataDict in deserializedData) {
    NSString * timeStamp = [dataDict objectForKey:@"DateCreated"];
    // and so on
}

This should loop you through every single element in the JSON data.

Upvotes: 10

Hot Licks
Hot Licks

Reputation: 47759

A legal JSON string can have, as its outer "container", either an array or a dictionary/"object". The JSON in your sample has an array as the outer "container". Perfectly legit.

If you don't know which to expect you have to test the object to see which it is.

Upvotes: 1

Related Questions