Objective-C / iOS: Converting an array of objects to JSON string
Solution 1
About your structure - your contactsToBeSynced
must be of NSDictionary
class, and contact
should be an NSArray
containing NSDictionary
objects for different contacts. By the way, have you tried JSONKit? It's serialization works better than standard NSJSONSerialization
.
Solution 2
I worked it out...
I created an NSArray
of contact objects and using the SBJson framework with SBJsonWriter:
SBJsonWriter *writer = [[SBJsonWriter alloc] init];
NSString *jsonString = [writer stringWithObject:arr];
I got a JSON string with a list of contacts.
rosst400
Ex .Net developer, currently working as a Tech Bus Analyst. Recently dived into the world of App Development for iOS and Android.
Updated on June 18, 2022Comments
-
rosst400 almost 2 years
I am currently experimenting with the use of JSON for internet data transfer. I have been successful in receiving a JSON string and converting it into an
NSDictionary
, but have not been able to work out how to convert an array or dictionary of objects into a JSON representation.I have read a number of posts and articles which explain how to create a
NSDictionary
of key/value pairs and then convert to JSON, which works fine for a simple array, but how do you achieve this when you have an array or dictionary of objects.So for example, I have an array of objects "contact", which I would then like to transform into a JSON string as such:
"contacts":{ "contact":[ { "id":"1" "first_name":"john", "last_name":"citizen", "phone":"9999 9999" } { "id":"1" "first_name":"jane", "last_name":"doe", "phone":"8888 8888" } ] }
I have a
NSMutableDictionary
which is populate a list of contact objects:NSMutableDictionary* contactsToBeSynced = [[NSMutableDictionary alloc] init]; //Populate dictionary with contact objects. contactsToBeSynced = self.getNonSynchronisedData;
I then attempt to transform the dictionary of objects with the
NSJSONSerialization
method, but it fails with an error.NSError* error; NSString* jsonString; NSData* jsonData = [NSJSONSerialization dataWithJSONObject:contactsToBeSynced options:NSJSONWritingPrettyPrinted error:&error]; jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
Has anyone been able to successfully do this? Would greatly appreciate some help or a point in the right direction. Cheers.