以前一直用的是SBJSON!NSJSONSerialization是5.0开始提供的,关于和其他的开源库的解析速度对比:http://arthurchen.blog.51cto.com/2483760/723910。
NSJSONSerialization 文档:https://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSJSONSerialization_Class/Reference/Reference.html
note:两个枚举常量意义:
NSJSONReadingOptions
Options used when creating Foundation objects from JSON data—see JSONObjectWithData:options:error:
andJSONObjectWithStream:options:error:
.
enum { NSJSONReadingMutableContainers = (1UL << 0), NSJSONReadingMutableLeaves = (1UL << 1), NSJSONReadingAllowFragments = (1UL << 2) }; typedef NSUInteger NSJSONReadingOptions;
Constants
NSJSONReadingMutableContainers
Specifies that arrays and dictionaries are created as mutable objects.
Available in iOS 5.0 and later.
Declared in NSJSONSerialization.h
.
NSJSONReadingMutableLeaves
Specifies that leaf strings in the JSON object graph are created as instances of NSMutableString
.
Available in iOS 5.0 and later.
Declared in NSJSONSerialization.h
.
NSJSONReadingAllowFragments
Specifies that the parser should allow top-level objects that are not an instance of NSArray
or NSDictionary
.
Available in iOS 5.0 and later.
Declared in NSJSONSerialization.h
.
NSJSONWritingOptions
Options for writing JSON data.
enum { NSJSONWritingPrettyPrinted = (1UL << 0) }; typedef NSUInteger NSJSONWritingOptions;
Constants
NSJSONWritingPrettyPrinted
Specifies that the JSON data should be generated with whitespace designed to make the output more readable. If this option is not set, the most compact possible JSON representation is generated.
Available in iOS 5.0 and later.
Declared in NSJSONSerialization.h
.
例子:
// // EASYJSONCategories.h // EASYJSON // // Created by EZ on 13-5-23. // Copyright (c) 2013年 cactus. All rights reserved. // #import <UIKit/UIKit.h> @interface NSObject (EASYJSONCategories) - (NSString *)prettyJSONString; - (NSString *)JSONStringRepresentation; @end @interface NSString (EASYJSONCategories) - (id)JSONObject; @end @interface NSData (EASYJSONCategories) - (id)JSONData; @end
// // EASYJSONCategories.m // EASYJSON // // Created by EZ on 13-5-23. // Copyright (c) 2013年 cactus. All rights reserved. // #import "EASYJSONCategories.h" @implementation NSObject (EASYJSONCategories) -(NSString*) JSONStringWithOption:(int) option { if(self == nil){ return nil; } NSError *err = nil; NSData *data = [NSJSONSerialization dataWithJSONObject:self options:option error:&err]; if(err) NSLog(@"%@", [err description]); return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; } - (NSString *)prettyJSONString { return [self JSONStringWithOption:NSJSONWritingPrettyPrinted]; } - (NSString *)JSONStringRepresentation { return [self JSONStringWithOption:0]; } @end @implementation NSString (EASYJSONCategories) - (id)JSONObject { if(self == nil){ return self; } NSError *err = nil; NSData *data = [self dataUsingEncoding:NSUTF8StringEncoding]; id jsonValue = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers|NSJSONReadingMutableLeaves error:&err]; if(err) NSLog(@"%@", [err description]); return jsonValue; } @end @implementation NSData (EASYJSONCategories) - (id)JSONData { if(self == nil){ return nil; } NSError *err = nil; id jsonValue = [NSJSONSerialization JSONObjectWithData:self options:0 error:&err]; if(err) NSLog(@"%@", [err description]); return jsonValue; } @end
相关推荐
NSJSONSerialization是iOS SDK中的一个核心框架,自iOS 5起引入,用于处理JSON(JavaScript Object Notation)数据。这个API允许开发者将JSON格式的数据序列化为Objective-C对象,同时也能将Objective-C对象反序列...
ios5中apple增加了解析JSON的api——NSJSONSerialization。网上已经有人做过测试,NSJSONSerialization在效率上完胜SBJSON、TouchJSON、YAJL、JSONKit、NextiveJson。详情见这里。既然apple为我们提供了这么良好的...
测试NSJSONSerialization,NSPropertyListSerialization,NSArchiver,NSKeyedArchiver 测试各种本地对象序列化API的应用 样本模型对象: { UUID = "90B471CC-C740-4C1E-A421-EA996E34B505"; point = "{...
在处理JSON数据时,Objective-C提供了内置的框架`NSJSONSerialization`,它为JSON(JavaScript Object Notation)与Objective-C对象之间的转换提供了方便。本文将深入探讨"NSJSONTest"项目,关注其核心主题——验证`...
替换为NSJSONSerialization。 Jay符合以下规范:JSON RFC4627 Open Swift C7 Jay Pure-Swift JSON解析器和格式化程序。 完全可流式输入和输出。 Linux和OS X就绪。 替换为NSJSONSerialization。 Jay符合以下规范:...
WebPImageSerialization WebPImageSerialization按照Foundation的NSJSONSerialization类的API约定在UIImage和图像之间进行编码和解码。 默认情况下, UIImage初始化程序无法解码GIF文件中的动画图像。 该库使用...
JSONKit-NSJSONSerialization-普遍认为效率不错的JSONKit,与苹果官方的JSONSerialization究竟差距有多大????##JSONKit##NSSerialization##效率比较代码(执行100*1000次查看内存消耗)(void)loadJSONKit {...
其中`NSJSONSerialization`是苹果官方推荐的方式,可以方便地将JSON数据转换成NSDictionay或NSArray对象。 #### 八、自动释放池底层怎么实现 自动释放池(`NSAutoreleasePool`)是一个特殊的对象,用于收集和管理...
使用`NSJSONSerialization`的`JSONObjectWithData:options:error:` 方法,传入下载到的JSON数据(NSData类型)、解析选项(一般传nil)以及错误处理(如果发生错误,可以通过这个参数获取错误信息)。 ```swift ...
NSNUllCategory相信不少开发者,都被NSNull坑过,最常见的是服务器返回的json... 这个时候,NSJSONSerialization 会自动把他们换成 NSNull。当我们再去用dict[@“hello”]的时候,就会出触发exception,导致程序崩溃。
`NSJSONSerialization`是Apple在其iOS 5及更高版本中引入的一个内置框架,专门用于JSON的序列化和反序列化。本篇文章将深入探讨如何使用`NSJSONSerialization`在iOS应用中进行JSON转换和解析。 ### 1. JSON基本概念...
`NSJSONSerialization`支持将JSON数据反序列化为Objective-C对象,如字典或数组,以及将Objective-C对象序列化为JSON数据。 反序列化(JSON -> OC对象): ```objc NSData *jsonData = ...; // JSON数据 NSError *...
在Objective-C中,苹果提供了`NSJSONSerialization`类来处理JSON序列化。以下是如何将实体类对象转换为JSON字符串的步骤: 1. 确保你的实体类遵循`NSCoding`协议。这通常包括实现`encodeWithCoder:`和`...
iOS 5系统引入了一个新的API,即`NSJSONSerialization`,来支持JSON的解析和序列化。这次测试的目的是对比`NSJSONSerialization`与其他五种开源JSON解析库在iOS 5上的性能表现。 测试所涉及的五个开源JSON解析库...
苹果提供了两个内置框架来实现这一过程:Foundation框架中的`NSJSONSerialization`类和CocoaPods库如Alamofire的序列化功能。 - `NSJSONSerialization`: 这是Apple官方提供的API,可以将Objective-C字典或数组转换...
在iPhone开发中,苹果的Foundation框架提供了一个名为`NSJSONSerialization`的类,它是处理JSON的主要工具。以下是如何使用`NSJSONSerialization`解析JSON数据的步骤: 1. **获取JSON数据**:通常,JSON数据来自于...
1. **解析JSON**:当从网络请求中接收到JSON数据时,可以使用`NSJSONSerialization`的`JSONObjectWithData:options:error:`方法将其转换为Objective-C的对象,如NSArray或NSDictionary。 ```objc NSData *jsonData ...
`NSJSONSerialization`是Apple提供的官方JSON解析和序列化工具,可以方便地将JSON字符串转换为Objective-C对象,反之亦然。 1. **解析JSON数据** 要解析JSON数据,首先需要获取到JSON字符串。这通常通过网络请求...
3. **解析JSON**:调用`NSJSONSerialization` 类的`JSONObjectWithData:options:error:` 方法,传入JSON字符串的`NSData` 对象,以及解析选项(如默认值为0),该方法会返回一个解析后的`id` 对象,可能是`NSArray` ...