`
小羊fc
  • 浏览: 90460 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Objective-C JSON操作

 
阅读更多

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-C中将JSON格式的数据映射到模型的属性。 首先,我们需要创建一个Objective-...

    深入浅出讲objective-c

    1. **语法特性**:Objective-C是在C语言的基础上扩展的,保留了C的语法特性,同时引入了消息传递机制,使得它具有面向对象的能力。 2. **类和对象**:Objective-C中的所有数据结构都是基于类的,类是对象的模板,而...

    Objective-C开发范例代码大全

    - **JSON解析**:Objective-C中有许多库如NSJSONSerialization和第三方库如AFNetworking用于解析JSON数据。 7. **Core Data** - **数据持久化**:Objective-C中的Core Data框架提供了一个模型-视图-控制器的数据...

    JSON头文件下载 用于objective-c中的json解析

    除了苹果的内置库,还有很多优秀的第三方库可以用于Objective-C的JSON操作,如SBJson、AFNetworking(内置JSON解析支持)、Mantle等。这些库提供了更丰富的功能,比如模型自动映射、异步解析等,能够简化开发过程,...

    Objective-C编程全解第三版

    5. Foundation框架:了解Objective-C语言的同时,也需要熟悉Cocoa的Foundation框架,这是一个丰富的类库,提供了大量的数据类型和功能,包括字符串操作、集合操作(数组、字典、集合等)、日期和时间处理、文件操作...

    Beginning Objective-C

    Objective-C是一种主要应用于苹果公司的Mac OS X和iOS操作系统的面向对象的编程语言。它起源于Smalltalk语言,但是通过C语言的语法,添加了消息传递、动态绑定以及基于原型的继承等特性。Objective-C在苹果公司的...

    Objective-C - NSURLSession实现短信验证码注册登录完整示例:Objective-C - NSURLSession.m和附件说明

    在iOS开发中,Objective-C是主要的编程语言之一,用于构建原生的移动应用程序。`NSURLSession`是苹果提供的一个强大的网络编程接口,用于处理HTTP和其他网络协议的数据传输。本示例将详细介绍如何使用Objective-C和...

    iOS Javascript与Objective-C互操作

    在iOS开发中,JavaScript与Objective-C的互操作性是一个重要的技术环节,特别是在混合式应用开发中。这种技术允许开发者利用JavaScript的灵活性和Objective-C的强大功能,实现高效且跨平台的应用程序。本文将深入...

    Objective-C Json 实例详解

    Objective-C Json 实例详解 Objective-C Json 实例详解是指使用 Objective-C 语言处理 Json 数据的方法和技术。Json(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器...

    swift-FirebaseChat-Objective-C写的完整的聊天应用

    在本项目"swift-FirebaseChat-Objective-C写的完整的聊天应用"中,我们主要探讨的是如何使用Objective-C语言来构建一个基于Firebase的实时聊天应用程序。Firebase是Google提供的一个全面的后端开发平台,它包含了...

    BSPHP网络验证系统苹果-Objective-C

    【标题】"BSPHP网络验证系统苹果-Objective-C"是一个专门为iOS平台设计的网络验证解决方案,使用Objective-C编程语言实现。它集成了BSPHP(可能是“Business Server PHP”的缩写)服务端的API,使得iOS应用能够与...

    Objective-C-Solutions

    Objective-C 是苹果公司为其操作系统,包括iOS和macOS,开发的一种面向对象的编程语言。它是C语言的一个超集,增加了面向对象的特性,同时也引入了Smalltalk的动态性。这本书"Objective-C Solutions"可能是一本关于...

    Swift-Objective-C中的JSONWeb令牌实现

    在Swift中,虽然没有官方的JWT库,但可以使用`AlamofireObjectMapper`或`SwiftyJSON`等库来处理JSON操作,然后结合`yourkarma-JWT`库进行JWT的处理。首先,你需要确保`yourkarma-JWT`已经被正确引入到你的Swift项目...

    objective-c-lib-source

    Objective-C 是苹果公司为其操作系统 macOS 和 iOS 开发的一种面向对象的编程语言,它以其与C语言的紧密集成和强大的动态特性而闻名。"objective-c-lib-source" 从标题上看,显然是一个Objective-C编写的开源库或者...

    Objective-C编程(第3版)

    - **与C语言兼容性**:Objective-C保留了C语言的所有功能,并允许在Objective-C代码中混合使用C代码。 - **内存管理**:早期版本中采用引用计数的方式进行手动内存管理(如`retain`和`release`),而在现代Objective...

    Objective-C Recipes - A Problem-Solution Approach

    尽管Objective-C提供了更多的功能,但主函数的形式与C语言非常相似。 3. 导入Foundation框架,这是Objective-C标准库的一部分,包含了处理字符串、数组、字典等基本类型的功能。 4. 编写代码以打印出一条消息到...

    Learn Objective-C on the mac

    1. **Objective-C基础**:Objective-C是C语言的超集,它引入了面向对象的概念,如类、对象、继承、多态和消息传递。在本教程中,读者将学习到如何定义类,创建实例,以及如何使用方法(消息)进行对象间的通信。 2....

    Objective-C.xmind.zip

    Objective-C是一种强大的面向对象的编程语言,主要用于Apple的iOS和macOS操作系统。它在C语言的基础上增加了类、消息传递和动态类型等特性,是开发Apple平台应用的基础。本资源"Objective-C.xmind.zip"可能是一个...

Global site tag (gtag.js) - Google Analytics