I have a dictionary. I need to use dictionary to generate a JSON string. Can it be converted? Can you help me?
#1 building
This is the category for NSArray and NSDictionary, which makes this operation very easy. I added an option for beautiful printing (line breaks and labels make reading easier).
@interface NSDictionary (BVJSONString) -(NSString*) bv_jsonStringWithPrettyPrint:(BOOL) prettyPrint; @end
.
@implementation NSDictionary (BVJSONString) -(NSString*) bv_jsonStringWithPrettyPrint:(BOOL) prettyPrint { NSError *error; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:self options:(NSJSONWritingOptions) (prettyPrint ? NSJSONWritingPrettyPrinted : 0) error:&error]; if (! jsonData) { NSLog(@"%s: error: %@", __func__, error.localizedDescription); return @"{}"; } else { return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; } } @end
.
@interface NSArray (BVJSONString) - (NSString *)bv_jsonStringWithPrettyPrint:(BOOL)prettyPrint; @end
.
@implementation NSArray (BVJSONString) -(NSString*) bv_jsonStringWithPrettyPrint:(BOOL) prettyPrint { NSError *error; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:self options:(NSJSONWritingOptions) (prettyPrint ? NSJSONWritingPrettyPrinted : 0) error:&error]; if (! jsonData) { NSLog(@"%s: error: %@", __func__, error.localizedDescription); return @"[]"; } else { return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; } } @end
#2 building
No need to introduce Nsjsonserialization into the third-party iOS 5 now
NSString *urlString=@"Your url"; NSString *urlUTF8 = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSURL *url=[[NSURL alloc]initWithString:urlUTF8]; NSURLRequest *request=[NSURLRequest requestWithURL:url]; NSURLResponse *response; NSData *GETReply = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil]; NSError *myError = nil; NSDictionary *res = [NSJSONSerialization JSONObjectWithData:GETReply options:NSJSONReadingMutableLeaves|| NSJSONReadingMutableContainers error:&myError]; Nslog(@"%@",res);
This code is useful for getting jsondata.
#3 building
You can also do this immediately by entering the following in the debugger
po [[NSString alloc] initWithData:[NSJSONSerialization dataWithJSONObject:yourDictionary options:1 error:nil] encoding:4];
#4 building
At least from ISO7, you can use NSJSONSerialization Do it easily One o'clock .
#5 building
To convert an NSDictionary to an NSString:
NSError * err; NSData * jsonData = [NSJSONSerialization dataWithJSONObject:myDictionary options:0 error:&err]; NSString * myString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];