首页 > 代码库 > 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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。