Converting an NSArray of Dictionaries to JSON array in iOS
Solution 1
NSDictionary *firstJsonDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
@"10.010490", @"latitude",
@"76.360779", @"longitude",
@"30.833334", @"altitude",
@"11:17:23", @"timestamp",
@"0.00", @"speed",
@"0.00", @"distance",
nil];
NSDictionary *secondJsonDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
@"10.010490", @"latitude",
@"76.360779", @"longitude",
@"30.833334", @"altitude",
@"11:17:23", @"timestamp",
@"0.00", @"speed",
@"0.00", @"distance",
nil];
NSMutableArray * arr = [[NSMutableArray alloc] init];
[arr addObject:firstJsonDictionary];
[arr addObject:secondJsonDictionary];
NSData *jsonData2 = [NSJSONSerialization dataWithJSONObject:arr options:NSJSONWritingPrettyPrinted error:&error];
NSString *jsonString = [[NSString alloc] initWithData:jsonData2 encoding:NSUTF8StringEncoding];
NSLog(@"jsonData as string:\n%@", jsonString);
Solution 2
The simplest and best approach !!!
To convert NSArray or NSMutableArray into jsonString you can first convert it into NSData and then further convert that into a NSString. Use this code
NSData* data = [ NSJSONSerialization dataWithJSONObject:yourArray options:NSJSONWritingPrettyPrinted error:nil ];
NSString *jsonString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
It helped me and hope it helps you as well. All the best.
Solution 3
I would recommend the SBJson-Framework.
Converting an NSMutableArray
is as simple as NSString *jsonString = [yourArray JSONRepresentation];
Edit: Jack Farnandish is right u have to transform it into a NSDictionary before you can convert it to Json. In my example the NSMutableArray has to contain the Dictionary. The Array is only needed to create the square brackets at the beginning and the end of the string.
Solution 4
First You must change you structure into NSDictionary
class and NSArray
containing NSDictionary
objects, then try JSONKit in iOS 5 serialization works better than standard NSJSONSerialization
.
Solution 5
#import <JSONKit/JSON.h>
NSArray *array = // Your array here.
NSString *json = [array JSONString];
NSLog(@"%@", json);
JSONKit performs significantly better than SBJson and others in my own and the author's benchmarks.
iOS Developer
Keep steadily before you the fact that all true success depends at last upon yourself.
Updated on September 26, 2020Comments
-
iOS Developer over 3 years
I need to send an
NSArray
to the server in theJSON
array format. How can I convert it toJSON
. This is a sample of myNSArray
that I have to pass.array([0] => array('latitude'=>'10.010490', 'longitude'=>'76.360779', 'altitude'=>'30.833334', 'timestamp'=>'11:17:23', 'speed'=>'0.00', 'distance'=>'0.00'); [1] => array('latitude'=>'10.010688', 'longitude'=>'76.361378', 'altitude'=>'28.546305', 'timestamp'=>'11:19:26', 'speed'=>'1.614', 'distance'=>'198.525711') )`
and the required format is like this
[ { "latitude":"10.010490", "longitude":"76.360779", "altitude":"30.833334", "timestamp":"11:17:23", "speed":"0.00", "distance":"0.00" }, { "latitude":"10.010688", "longitude":"76.361378", "altitude":"28.546305", "timestamp":"11:19:26", "speed":"1.614", "distance":"198.525711" } ]
Any one have solution? Thanks in advance.
-
Pradumna Patil almost 9 yearsIt works for me but I want response in array format not in string format.
-
prashant almost 9 yearsinline 'code [ { "latitude":"10.010490", "longitude":"76.360779", "altitude":"30.833334", "timestamp":"11:17:23", "speed":"0.00", "distance":"0.00" }, { "latitude":"10.010688", "longitude":"76.361378", "altitude":"28.546305", "timestamp":"11:19:26", "speed":"1.614", "distance":"198.525711" } ] ' you will get it in Array format only
-
brainray over 7 yearsThis is the correct answer to the question title. Thanks. The accepted answer shows an array of dictionaries
-
brainray over 7 yearsUsing framework for such a simple task is not really a good idea. Update 2016 RestKit is not a maintained framework any more.