Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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)?

like image 326
Evan Avatar asked Dec 12 '11 00:12

Evan


2 Answers

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.

like image 53
Ignacio Inglese Avatar answered Nov 02 '22 09:11

Ignacio Inglese


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.

like image 21
Hot Licks Avatar answered Nov 02 '22 11:11

Hot Licks