JSON資料與NSDictionary和NSArray之間的轉化
// 將字典或者陣列轉化為JSON串
- (NSData *)toJSONData:(id)theData{
NSError *error = nil;
NSData *jsonData = [NSJSONSerialization
options:NSJSONWritingPrettyPrinted
error:&error];
if ([jsonData length] > 0 && error == nil){
return jsonData;
}else{
return
}
}
使用這個方法的返回,我們就可以得到想要的JSON串NSString *jsonString = [[NSString alloc] initWithData:jsonData
encoding:NSUTF8StringEncoding];
二、將JSON串轉化為NSDictionary或NSArray 將NSString轉化為NSData[jsonString dataUsingEncoding:NSASCIIStringEncoding];
// 將JSON串轉化為字典或者陣列
- (id)toArrayOrNSDictionary:(NSData *)jsonData{
NSError *error = nil;
id jsonObject = [NSJSONSerialization JSONObjectWithData:jsonData
options:NSJSONReadingAllowFragments
error:&error];
if (jsonObject != nil && error == nil){
return jsonObject;
}else{
// 解析錯誤
return nil;
}
}
三、將JSON串與NSArray和NSDictionary的操作進行封裝 當然,也有很多時候,我們將這些操作,分別定義在NSObject和NSString的一個分類中 直接貼: 1.將NSString轉化為NSArray或者NSDictionary#import "NSString+JSONCategories.h"
@implementation NSString(JSONCategories)
-(id)JSONValue;
{
NSData* data = [self dataUsingEncoding:NSUTF8StringEncoding];
__autoreleasing NSError* error = nil;
id result = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
if (error != nil) return nil;
return result;
}
@end
2.將NSArray或者NSDictionary轉化為NSString#import "NSObject+JSONCategories.h"
@implementation NSObject (JSONCategories)
-(NSData*)JSONString;
{
NSError* error = nil;
id result = [NSJSONSerialization dataWithJSONObject:self
options:kNilOptionserror:&error];
if (error != nil) return nil;
return result;
}
@end