首页 > 代码库 > NSJSONSerialization能够处理的JSONData

NSJSONSerialization能够处理的JSONData

NSJSONSerialization能够处理的JSONData

You use the NSJSONSerialization class to convert JSON to Foundation objects and convert Foundation objects to JSON.

你用NSJSONSerialization这个类来将JSON数据转换成Foundation对象或者将Foundation对象转换成JSON数据。

An object that may be converted to JSON must have the following properties:

一个能被转换成JSON数据的对象必须具备以下的特性:

  • The top level object is an NSArray or NSDictionary. 
  • All objects are instances of NSString, NSNumber, NSArray, NSDictionary, or NSNull. 
  • All dictionary keys are instances of NSString. 
  • Numbers are not NaN or infinity.
  • 最顶层的对象必须是NSArray或者NSDictionary
  • 所有的实例对象必须是NSString、NSNumber、NSArray、NSDictionary或者NSNull
  • 所有字典中的键值必须是NSString
  • Numbers必须是有意义的(不能是无穷大)

提供测试使用的源码:

NSDictionary+JSON.h 与 NSDictionary+JSON.m

////  NSDictionary+JSON.h//  Category////  Created by YouXianMing on 14-8-28.//  Copyright (c) 2014年 YouXianMing. All rights reserved.//#import <Foundation/Foundation.h>@interface NSDictionary (JSON)// 转换成JSONString- (NSString *)toJSONString;// 转换成JSONData- (NSData *)toJSONData;@end
////  NSDictionary+JSON.m//  Category////  Created by YouXianMing on 14-8-28.//  Copyright (c) 2014年 YouXianMing. All rights reserved.//#import "NSDictionary+JSON.h"@implementation NSDictionary (JSON)- (NSString *)toJSONString{    NSData *data =http://www.mamicode.com/ [NSJSONSerialization dataWithJSONObject:self                                                   options:NSJSONWritingPrettyPrinted                                                     error:nil];        if (data =http://www.mamicode.com/= nil)    {        return nil;    }        NSString *string = [[NSString alloc] initWithData:data                                             encoding:NSUTF8StringEncoding];    return string;}- (NSData *)toJSONData{    NSData *data =http://www.mamicode.com/ [NSJSONSerialization dataWithJSONObject:self                                                   options:NSJSONWritingPrettyPrinted                                                     error:nil];        return data;}@end

NSData+JSON.h 与 NSData+JSON.m

////  NSData+JSON.h//  Category////  Created by YouXianMing on 14-8-28.//  Copyright (c) 2014年 YouXianMing. All rights reserved.//#import <Foundation/Foundation.h>@interface NSData (JSON)// 转换成集合- (id)toPropertyList;@end
////  NSData+JSON.m//  Category////  Created by YouXianMing on 14-8-28.//  Copyright (c) 2014年 YouXianMing. All rights reserved.//#import "NSData+JSON.h"@implementation NSData (JSON)- (id)toPropertyList{    return [NSJSONSerialization JSONObjectWithData:self                                           options:NSJSONReadingMutableLeaves                                             error:nil];}@end

使用时的源码:

////  ViewController.m//  JSON////  Created by YouXianMing on 14-10-8.//  Copyright (c) 2014年 YouXianMing. All rights reserved.//#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];     // 组织JSON数据    NSDictionary *jsonDic =     @{    @"name"          : @"YouXianMing",                             // NSString    @"age"           : @26,                                        // NSNumber    @"BWH"           : @[@1, @1, @1],                              // NSArray    @"address"       : @{@"BeiJin": @"XXXX", @"XianNing":@"YYYY"}, // NSDictionary    @"HasGirlFriend" : [NSNull null]                               // NSNull    };        // 转换成JSONData    NSData *jsonData =http://www.mamicode.com/ [jsonDic toJSONData];        // 将JSONData转换成list    NSLog(@"%@", [jsonData toPropertyList]);}@end

以下是要点:

还有一点需要注意:

所有的数字相关的类型都会被转换成NSNumber,无论是布尔值还是浮点值还是整型值,都会被转换成NSNumber。

 

NSJSONSerialization能够处理的JSONData