8.10. Deserializing JSON into Arrays and Dictionaries
Problem
You have JSON data and you want to deserialize it into a dictionary or an array.
Solution
Use the JSONObjectWithData:options:error:
method of
the NSJSONSerialization
class.
Discussion
If you already have serialized your dictionary or array into a
JSON object (encapsulated inside an instance of NSData
, see Recipe 8.9), you
should be able to deserialize them back into a dictionary or an array,
using the JSONObjectWithData:options:error:
method of
the NSJSONSerialization
class. The
object that is returned back by this method will either be a
dictionary or an array, depending on the data that we pass to it. Here
is an example:
/* Now try to deserialize the JSON object into a dictionary */ error = nil; id jsonObject = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingAllowFragments error:&error]; if (jsonObject != nil && error == nil){ NSLog(@"Successfully deserialized..."); if ([jsonObject isKindOfClass:[NSDictionary class]]){ NSDictionary *deserializedDictionary = (NSDictionary *)jsonObject; NSLog(@"Deserialized JSON Dictionary = %@", deserializedDictionary); } else if ([jsonObject isKindOfClass:[NSArray class]]){ NSArray *deserializedArray = (NSArray *)jsonObject; NSLog(@"Deserialized JSON Array = %@", deserializedArray); } else { /* Some other object was returned. We don't know how to deal with this situation as the deserializer returns only dictionaries or arrays */ } } else if (error != nil){ NSLog(@"An ...
Get iOS 5 Programming Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.