我们用到需要向服务器端传递json的字符串,这时候我们需要把参数字典转成字符串。直接使用[NSString stringWithFormat:@"%@",dict]转成的字符串带有空格和换行符,所以我们需要处理一下。
-(NSString*)convertToJsonData:(NSDictionary*)dict
{
NSError*error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:&error];
NSString*jsonString;
if(!jsonData) {
NSLog(@"%@",error);
}else{
jsonString = [[NSString alloc]initWithData:jsonData encoding:NSUTF8StringEncoding];
}
NSMutableString *mutStr = [NSMutableString stringWithString:jsonString];
NSRangerange = {0,jsonString.length};
//去掉字符串中的空格
[mutStrreplaceOccurrencesOfString:@" " withString:@"" options:NSLiteralSearch range:range];
NSRangerange2 = {0,mutStr.length};
//去掉字符串中的换行符
[mutStrreplaceOccurrencesOfString:@"\n" withString:@"" options:NSLiteralSearch range:range2];
returnmutStr;
}
这样我们就得到需要的json字符串了,接下来我们使用这个字符串进行加密或者直接传递服务器端就可以实现我们需要的功能了。
我们将json字符串转字典或数组是,使用一下两个方法可以实现。
+ (NSDictionary*)dictionaryWithJsonString:(NSString*)jsonString
{
if(jsonString ==nil) {
returnnil;
}
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSError*err;
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData
options:NSJSONReadingMutableContainers
error:&err];
if(err)
{
NSLog(@"json解析失败:%@",err);
returnnil;
}
returndic;
}
+ (NSArray*)arrayWithJsonString:(NSString*)jsonString
{
if(jsonString ==nil) {
returnnil;
}
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSError*err;
NSArray *arr = [NSJSONSerialization JSONObjectWithData:jsonData
options:NSJSONReadingMutableContainers
error:&err];
if(err)
{
NSLog(@"json解析失败:%@",err);
returnnil;
}
returnarr;
}
是不是很简单,哈哈