最近做项目遇到了一个SBJSON三方库的问题,就是做网络请求时,需要将带参数的字典转换成字符串,由于是这一块是迁移的代码,故刚开始使用的是SBJSON三方库中的NSObject+SBJSON这个分类的方法:
- (NSString *)JSONRepresentation {
SBJsonWriter *jsonWriter = [SBJsonWriter new];
NSString *json = [jsonWriter stringWithObject:self];
if (!json){
NSLog(@"-JSONRepresentation failed. Error trace is: %@", [jsonWriter errorTrace]);
}
[jsonWriter release];
return json;
}
网络请求时字典数据转换成字符串的代码:
NSMutableDictionary *param = [NSMutableDictionary dictionaryWithDictionary];
[param setValue:@"" forKey:@""];
NSDictionary *jsonDict = @{@"data":@[param]};
@{@"jsonData":[jsonDict JSONRepresentation]}
遇到的问题:就是使用POST请求提交数据时,第一次提交没问题,第二次提交时同样的过程,确发生了崩溃出现在了SBJSON三方库中,由于项目比较赶,所给的解决问题的时间并不是太充裕,查了一下资料,就使用系统API中的NSJSONSerialization 这个类来将字典数据转换成了字符串。
NSMutableDictionary *param = [NSMutableDictionary dictionaryWithDictionary];
[param setValue:@"" forKey:@""];
NSDictionary *jsonDict = @{@"data":@[param]};
NSError *parseError = nil;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsonDict options:NSJSONWritingPrettyPrinted error:&parseError];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
@{@"jsonData":jsonString]};