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 实例详解的相关资料,希望通过本文能帮助到大家,让大家掌握Object-C Json的使用,需要的朋友可以参考下
本项目是一个基于Objective-C语言开发的iOS自定义播放器,包含44个文件,主要文件类型包括图片、MATLAB脚本、头文件、视频文件、配置文件、JSON配置文件、字符串文件、Git忽略文件、项目文件和Workspace数据文件。...
在Objective-C中基于块的JSON解析和生成。 总览 SBJson的第一大功能是基于流/块的操作。 向解析器提供一个或多个UTF8编码数据块,它将调用您在每个根级文档或数组中提供的一个块。 或者(可选)针对每个根级数组中...
RWPromiseKit Desiciption用于Objective-C的轻量级Promise库关于Promise Promise对象用于延迟和异步计算。 Promise表示没有RWPromiseKit Desiciption的操作。Objective-C的轻量级Promise库关于Promise Promise对象...
ModelKit是用于Objective-C(Cocoa / iOS)的易于使用的模型框架。 它使您可以快速轻松地编写模型层,并为您管理持久性(本地和网络)。 ##关于ModelKit在进入操作方法之前,重要的是要了解什么是ModelKit,什么...
获取模型描述(作为 JSON 或作为 Xcode Core Data 模型),并将其应用于一组模板,以生成源文件。 主要目标是生成样板类和方法来支持模型。 在这方面它类似于 。 但是,与 Mogenerator 不同,它没有直接链接到 ...
一个非常简单轻巧的Swift包装器,用于Objective-C JSON解析器 用法 要在您的项目中使用此功能,只需将文件复制到您的项目中即可。 通常,我是Cocoapods的忠实粉丝,但鉴于此处实际操作的简单性,这似乎是不必要的。...
LicenseFinder 能够为你的项目找到许可证依赖项。LicenseFinder 与你的软件包管理器一起使用能够找到其依赖项,能检测到包中的许可证,且许可证还能与用户定义的白名单比较,另外你能够... Objective-C ( CocoaPods)
第十五部分:Objective-C 基础知识-介绍面向对象的编程 第十六部分:如何在你的 iPhone App 中发送邮件 第十七部分:持续改善 Recipe App 的详细视图控制器 第十八部分:在 iOS 5 中使用 JSON 编程 第十九部分:在.NET ...
gRPC(C++、Node.js、Python、Ruby、Objective-C、PHP、C#) - nanomsg 库 - 用 Python 绑定用 C 编写的超快速 JSON 解码器和编码器 - 树莓派的Buildroot开发环境 - 操作系统项目 4 - 支持多种 GSS 方法的 nfs-utils...
移动端主要分为安卓(Android)系统和苹果(iOS)系统两大阵营,安卓系统上的应用软件以Java语言为基础进行开发,苹果系统上的应用软件可以使用Objective-C或Swift语言开发。当然随着HTML 5和Hybrid混合模式移动应用...
第十五部分:Objective-C基础知识-介绍面向对象的编程 第十六部分:如何在你的iPhone App中发送邮件 第十七部分:持续改善Recipe App的详细视图控制器 第十八部分:在iOS 5中使用JSON编程 第十九部分:在.NET ...
基于AFNetworking和JSONModel整合的IOS ModelNetworkClient(JFNetworkClient) 最低支持IOS 6.0的开发 (项目来自于 XX团购团队,经历了2次重构产生的网络框架,再整理后分享给大家) 依赖外部模块: AFNetworking(2...
第十五部分:Objective-C基础知识-介绍面向对象的编程 第十六部分:如何在你的iPhone App中发送邮件 第十七部分:持续改善Recipe App的详细视图控制器 第十八部分:在iOS 5中使用JSON编程 第十九部分:在.NET ...
它的灵感来自于Objective-C的Apple的NSKeyValueCoding协议。 支持以下常见的Erlang数据结构: list() dict() gb_trees() proplist() {struct, proplist()} (通常在mochijson2中使用) {proplist()} ( ) map() ...
协议缓冲区目前支持在 Java、Python、Objective-C 和 C++ 中生成的代码。 使用我们新的 proto3 语言版本,您还可以使用 Dart、Go、Ruby 和 C#,以及更多的语言。 proto 包提供了操作 protobuf 消息的功能,例如克隆...
Objectwitter-C 是一款稳定,成熟,全面的 Twitter REST/Streaming API 的 Objective-C 封装,其封装了 Twitter 的全部公开 API。由 @开源中国真理部部长 基于 STTwitter 开发,在 STTwitter 对 Twitter REST API ...
快速轻松映射 注意 这是的分支, 是用于JSON映射的灵活,简单的框架。... 操作系统 9.0 watchOS 2.0 使用Xcode 8.3.2+构建 安装 可可豆 是Cocoa项目的依赖项经理。 您可以使用以下命令进行安装: $ gem inst
第十五部分:Objective-C基础知识-介绍面向对象的编程 第十六部分:如何在你的iPhone App中发送邮件 第十七部分:持续改善Recipe App的详细视图控制器 第十八部分:在iOS 5中使用JSON编程 第十九部分:在.NET ...