Objective-C 操作JSON 主要使用的是 NSJSONSerialization 这个类
NSJSONSerialization 包含了以下五个类函数
+ (BOOL)isValidJSONObject:(id)obj;
判断 该实例(obj)是否为JSONObject
需满足下面三个条件
1.obj 是NSArray 或 NSDictionay 以及他们派生出来的子类
2.obj 包含的所有对象是NSString,NSNumber,NSArray,NSDictionary 或NSNull
3.NSNumber的对象不能是NaN或无穷大
+ (NSData *)dataWithJSONObject:(id)obj options:(NSJSONWritingOptions)opt error:(NSError **)error;
将JSONObject的实例转成NSData
+ (id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError **)error;
将NSData类型的实例转成JSONObject
+ (NSInteger)writeJSONObject:(id)obj toStream:(NSOutputStream *)stream options:(NSJSONWritingOptions)opt error:(NSError **)error;
将一个JSONObject的实例写入到一个输出流中 返回写入的长度
+ (id)JSONObjectWithStream:(NSInputStream *)stream options:(NSJSONReadingOptions)opt error:(NSError **)error;
从输入流中读取成JSONObject 并返回
代码演示:
NSMutableDictionary *dictionary = [[NSMutableDictionary alloc]init]; [dictionary setValue:@"xiaominfc" forKey:@"username"]; [dictionary setValue:@"1991-03-26" forKey:@"birthday"]; [dictionary setValue:[NSNumber numberWithInteger:23] forKey:@"age"]; NSArray *arrayOfAnthonysChildren = [[NSArray alloc]initWithObjects:@"Java",@"Objective-C",@"Python",@"C++", nil]; [dictionary setValue:arrayOfAnthonysChildren forKey:@"program_language"]; if([NSJSONSerialization isValidJSONObject:dictionary]){ NSLog(@"it is a JSONObject!"); } //use dataWithJSONObject fun NSError *error = nil; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictionary options:NSJSONWritingPrettyPrinted error:&error]; if([jsonData length] > 0 && error == nil) { NSString *jsonString = [[NSString alloc]initWithData:jsonData encoding:NSUTF8StringEncoding]; NSLog(@"data:%@",jsonString); } //use JSONObjectWithData fun NSString *jsonDataString = @"{\"username\":\"xiaominfc\",\"city\":\"深圳\"}"; NSData *data = [jsonDataString dataUsingEncoding:NSUTF8StringEncoding]; id jsonObject = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error]; if ([jsonObject isKindOfClass:[NSDictionary class]]) { NSDictionary *jsonDictionary = (NSDictionary*)jsonObject; NSLog(@"username:%@ And city:%@",[jsonDictionary valueForKey:@"username"],[jsonDictionary valueForKey:@"city"]); } //use writeJSONObject fun NSString *filePath = @"/Users/xiaominfc/text.txt"; NSOutputStream *outStream = [[NSOutputStream alloc]initToFileAtPath:filePath append:NO]; [outStream open]; NSInteger length = [NSJSONSerialization writeJSONObject:dictionary toStream:outStream options:NSJSONWritingPrettyPrinted error:&error]; NSLog(@"write %ld bytes",(long)length); [outStream close]; //use JSONObjectWithStream NSInputStream *inStream = [[NSInputStream alloc]initWithFileAtPath:filePath]; [inStream open]; id streamObject = [NSJSONSerialization JSONObjectWithStream:inStream options:NSJSONReadingAllowFragments error:&error]; if ([streamObject isKindOfClass:[NSDictionary class]]) { NSDictionary *jsonDictionary = (NSDictionary*)streamObject; NSNumber *ageNumber = (NSNumber*)[jsonDictionary valueForKey:@"age"]; NSLog(@"username:%@ And age:%d",[jsonDictionary valueForKey:@"username"],[ageNumber intValue]); } [inStream close];
相关推荐
为了在Objective-C中使用这些数据,我们需要将JSON转换为模型对象,以便能够更方便地操作和显示数据。本篇文章将详细介绍如何在Objective-C中将JSON格式的数据映射到模型的属性。 首先,我们需要创建一个Objective-...
1. **语法特性**:Objective-C是在C语言的基础上扩展的,保留了C的语法特性,同时引入了消息传递机制,使得它具有面向对象的能力。 2. **类和对象**:Objective-C中的所有数据结构都是基于类的,类是对象的模板,而...
- **JSON解析**:Objective-C中有许多库如NSJSONSerialization和第三方库如AFNetworking用于解析JSON数据。 7. **Core Data** - **数据持久化**:Objective-C中的Core Data框架提供了一个模型-视图-控制器的数据...
除了苹果的内置库,还有很多优秀的第三方库可以用于Objective-C的JSON操作,如SBJson、AFNetworking(内置JSON解析支持)、Mantle等。这些库提供了更丰富的功能,比如模型自动映射、异步解析等,能够简化开发过程,...
5. Foundation框架:了解Objective-C语言的同时,也需要熟悉Cocoa的Foundation框架,这是一个丰富的类库,提供了大量的数据类型和功能,包括字符串操作、集合操作(数组、字典、集合等)、日期和时间处理、文件操作...
Objective-C是一种主要应用于苹果公司的Mac OS X和iOS操作系统的面向对象的编程语言。它起源于Smalltalk语言,但是通过C语言的语法,添加了消息传递、动态绑定以及基于原型的继承等特性。Objective-C在苹果公司的...
在iOS开发中,Objective-C是主要的编程语言之一,用于构建原生的移动应用程序。`NSURLSession`是苹果提供的一个强大的网络编程接口,用于处理HTTP和其他网络协议的数据传输。本示例将详细介绍如何使用Objective-C和...
在iOS开发中,JavaScript与Objective-C的互操作性是一个重要的技术环节,特别是在混合式应用开发中。这种技术允许开发者利用JavaScript的灵活性和Objective-C的强大功能,实现高效且跨平台的应用程序。本文将深入...
Objective-C Json 实例详解 Objective-C Json 实例详解是指使用 Objective-C 语言处理 Json 数据的方法和技术。Json(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器...
在本项目"swift-FirebaseChat-Objective-C写的完整的聊天应用"中,我们主要探讨的是如何使用Objective-C语言来构建一个基于Firebase的实时聊天应用程序。Firebase是Google提供的一个全面的后端开发平台,它包含了...
【标题】"BSPHP网络验证系统苹果-Objective-C"是一个专门为iOS平台设计的网络验证解决方案,使用Objective-C编程语言实现。它集成了BSPHP(可能是“Business Server PHP”的缩写)服务端的API,使得iOS应用能够与...
Objective-C 是苹果公司为其操作系统,包括iOS和macOS,开发的一种面向对象的编程语言。它是C语言的一个超集,增加了面向对象的特性,同时也引入了Smalltalk的动态性。这本书"Objective-C Solutions"可能是一本关于...
在Swift中,虽然没有官方的JWT库,但可以使用`AlamofireObjectMapper`或`SwiftyJSON`等库来处理JSON操作,然后结合`yourkarma-JWT`库进行JWT的处理。首先,你需要确保`yourkarma-JWT`已经被正确引入到你的Swift项目...
Objective-C 是苹果公司为其操作系统 macOS 和 iOS 开发的一种面向对象的编程语言,它以其与C语言的紧密集成和强大的动态特性而闻名。"objective-c-lib-source" 从标题上看,显然是一个Objective-C编写的开源库或者...
- **与C语言兼容性**:Objective-C保留了C语言的所有功能,并允许在Objective-C代码中混合使用C代码。 - **内存管理**:早期版本中采用引用计数的方式进行手动内存管理(如`retain`和`release`),而在现代Objective...
尽管Objective-C提供了更多的功能,但主函数的形式与C语言非常相似。 3. 导入Foundation框架,这是Objective-C标准库的一部分,包含了处理字符串、数组、字典等基本类型的功能。 4. 编写代码以打印出一条消息到...
1. **Objective-C基础**:Objective-C是C语言的超集,它引入了面向对象的概念,如类、对象、继承、多态和消息传递。在本教程中,读者将学习到如何定义类,创建实例,以及如何使用方法(消息)进行对象间的通信。 2....
Objective-C是一种强大的面向对象的编程语言,主要用于Apple的iOS和macOS操作系统。它在C语言的基础上增加了类、消息传递和动态类型等特性,是开发Apple平台应用的基础。本资源"Objective-C.xmind.zip"可能是一个...