将对象转化成NSData类型再转化成json类型

将对象转化成NSData类型
NSData *data = [NSJSONSerialization dataWithJSONObject:"对象" options:NSJSONWritingPrettyPrinted error:nil];
这里的对象必须是NSString/NSNumber/NSArray/NSDictionary/NSNull的实例,NSDictionary的key必须是NSString类型,数字对象不能是非数值或无穷;
如果不是程序会崩溃,错误信息:reason: 'Invalid type in JSON write

// string类型和data类型相互转化
// 字符串UTF8编码转化成NSData类型
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
// data类型UTF8反编码成字符串类型
NSString *str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];

// data类型二进制字符串相互转化
// NSData类型base64位编码转化成二进制字符串类型
NSString *str = [data base64EncodedStringWithOptions:0];
// 二进制字符串类型base64位反编码成data类型
NSData *data = [[NSData alloc]initWithBase64EncodedString:str options:0];

如果数组或字典里的对象是图片类型需要做的是以下几步:
1、将图片转化成NSData类型
NSData *data = UIImagePNGRepresentation(img);
2、通过base64编码转化成NSString类型
NSString *s = [data base64EncodedString];
3、将s放进数组或者字典
NSDictionary *dic = @{@"img":s};
4、对字典转化成NSData类型
NSData *data = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:nil];
5、将NSData类型转化成json字符串类型
NSString *strs=[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

补充:
base64编码:
http://www.jianshu.com/p/b8a5e1c770f9

你可能感兴趣的:(将对象转化成NSData类型再转化成json类型)