JSON字串與NSDictionary和NSArray之間的轉化
阿新 • • 發佈:2019-02-18
#pragma mark--把字典和陣列轉換成json字串 +(NSString *)stringTOjson:(id)temps //把字典和陣列轉換成json字串 { NSData* jsonData =[NSJSONSerialization dataWithJSONObject:temps options:NSJSONWritingPrettyPrinted error:nil]; NSString *strs=[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; return strs; }
一、將NSDictionary或NSArray轉化為JSON串 // 將字典或者陣列轉化為JSON串 - (NSData *)toJSONData:(id)theData{ NSError *error = nil; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:theData options:NSJSONWritingPrettyPrinted error:&error]; if ([jsonData length] > 0 && error == nil){ return jsonData; }else{ return nil; } } 使用這個方法的返回,我們就可以得到想要的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:kNilOptions error:&error];
if (error != nil) return nil;
return result;
}
@end