NSJSONSerialization-JSON数据与NSDictionary和NSArray之间的转化

一、将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
 NSData *data =  [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的操作进行封装

 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

你可能感兴趣的:(NSJSONSerialization-JSON数据与NSDictionary和NSArray之间的转化)