在iOS開發中,網絡請求需要傳數組的時候如果直接把nsarray放到NSDictionary進去的話服務端會不好解析,需要將nsarray轉成
jsonarray[{},{}],代碼如下
+ (NSString *)arrayToJSONString:(NSArray *)arrayData
{
NSData *data = [NSJSONSerialization dataWithJSONObject:arrayData
options:NSJSONWritingPrettyPrinted
error:nil];
if (data == nil) {
return nil;
}
NSString *string = [[NSString alloc] initWithData:data
encoding:NSUTF8StringEncoding];
return string;
}
順便再放下自己平時比較常用的NSString與NSDictionary和NSArray之間的轉換方法
+ (NSDictionary *)stringToDic:(NSString *)jsonString
{
if (jsonString == nil) {
return nil;
}
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSError *err;
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData
options:NSJSONReadingMutableContainers
error:&err];
if(err) {
NSLog(@"json解析失敗:%@",err);
return nil;
}
return dic;
}
+(NSArray *)stringToArray:(NSString *)jsonString
{
if (jsonString == nil) {
return nil;
}
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSError *err;
NSArray *array = [NSJSONSerialization JSONObjectWithData:jsonData
options:NSJSONReadingMutableContainers
error:&err];
if(err) {
NSLog(@"json解析失敗:%@",err);
return nil;
}
return array;
}
+ (NSString *)dicToString:(NSDictionary *)dicData
{
if ([dicData count] == 0) {
return @"";
}
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dicData options:0 error:0];
return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
}