`
小羊fc
  • 浏览: 88822 次
  • 性别: 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 实例详解的相关资料,希望通过本文能帮助到大家,让大家掌握Object-C Json的使用,需要的朋友可以参考下

    基于Objective-C的iOS自定义播放器设计源码

    本项目是一个基于Objective-C语言开发的iOS自定义播放器,包含44个文件,主要文件类型包括图片、MATLAB脚本、头文件、视频文件、配置文件、JSON配置文件、字符串文件、Git忽略文件、项目文件和Workspace数据文件。...

    SBJson:此框架在Objective-C中实现了严格的JSON解析器和生成器

    在Objective-C中基于块的JSON解析和生成。 总览 SBJson的第一大功能是基于流/块的操作。 向解析器提供一个或多个UTF8编码数据块,它将调用您在每个根级文档或数组中提供的一个块。 或者(可选)针对每个根级数组中...

    用于Objective-C的轻量级Promise库-Swift开发

    RWPromiseKit Desiciption用于Objective-C的轻量级Promise库关于Promise Promise对象用于延迟和异步计算。 Promise表示没有RWPromiseKit Desiciption的操作。Objective-C的轻量级Promise库关于Promise Promise对象...

    ModelKit:适用于Objective-C的更好的模型框架

    ModelKit是用于Objective-C(Cocoa / iOS)的易于使用的模型框架。 它使您可以快速轻松地编写模型层,并为您管理持久性(本地和网络)。 ##关于ModelKit在进入操作方法之前,重要的是要了解什么是ModelKit,什么...

    Coma:一个代码生成器。 获取描述模型的 JSON 模板,并将它们转换为 Objective-C 类

    获取模型描述(作为 JSON 或作为 Xcode Core Data 模型),并将其应用于一组模板,以生成源文件。 主要目标是生成样板类和方法来支持模型。 在这方面它类似于 。 但是,与 Mogenerator 不同,它没有直接链接到 ...

    LumaJSON:Swift的超级简单JSON助手

    一个非常简单轻巧的Swift包装器,用于Objective-C JSON解析器 用法 要在您的项目中使用此功能,只需将文件复制到您的项目中即可。 通常,我是Cocoapods的忠实粉丝,但鉴于此处实际操作的简单性,这似乎是不必要的。...

    许可证依赖搜索LicenseFinder.zip

    LicenseFinder 能够为你的项目找到许可证依赖项。LicenseFinder 与你的软件包管理器一起使用能够找到其依赖项,能检测到包中的许可证,且许可证还能与用户定义的白名单比较,另外你能够... Objective-C ( CocoaPods)

    一步一步学习 iOS 6 编程(第四版)

    第十五部分:Objective-C 基础知识-介绍面向对象的编程 第十六部分:如何在你的 iPhone App 中发送邮件 第十七部分:持续改善 Recipe App 的详细视图控制器 第十八部分:在 iOS 5 中使用 JSON 编程 第十九部分:在.NET ...

    百度翻译源码java-my-awesome-starred:我的真棒明星

    gRPC(C++、Node.js、Python、Ruby、Objective-C、PHP、C#) - nanomsg 库 - 用 Python 绑定用 C 编写的超快速 JSON 解码器和编码器 - 树莓派的Buildroot开发环境 - 操作系统项目 4 - 支持多种 GSS 方法的 nfs-utils...

    PHP项目开发实战_开发一个App后台_编程案例解析实例详解课程教程.pdf

    移动端主要分为安卓(Android)系统和苹果(iOS)系统两大阵营,安卓系统上的应用软件以Java语言为基础进行开发,苹果系统上的应用软件可以使用Objective-C或Swift语言开发。当然随着HTML 5和Hybrid混合模式移动应用...

    一步步学IOS5编程完整版

    第十五部分:Objective-C基础知识-介绍面向对象的编程 第十六部分:如何在你的iPhone App中发送邮件 第十七部分:持续改善Recipe App的详细视图控制器 第十八部分:在iOS 5中使用JSON编程 第十九部分:在.NET ...

    FFMNetworking:来源一个XXIOS重构项目,基于AFNetworking和JSONModel整合的IOS ModelNetworkClient,为需要使用网络的IOS App提供方便快捷、基于操作对象的App开发体验,提供JSONModel自动化脚本支持

    基于AFNetworking和JSONModel整合的IOS ModelNetworkClient(JFNetworkClient) 最低支持IOS 6.0的开发 (项目来自于 XX团购团队,经历了2次重构产生的网络框架,再整理后分享给大家) 依赖外部模块: AFNetworking(2...

    一步一步学习IOS6

    第十五部分:Objective-C基础知识-介绍面向对象的编程 第十六部分:如何在你的iPhone App中发送邮件 第十七部分:持续改善Recipe App的详细视图控制器 第十八部分:在iOS 5中使用JSON编程 第十九部分:在.NET ...

    kvc:KVC-Erlang数据结构的键值编码

    它的灵感来自于Objective-C的Apple的NSKeyValueCoding协议。 支持以下常见的Erlang数据结构: list() dict() gb_trees() proplist() {struct, proplist()} (通常在mochijson2中使用) {proplist()} ( ) map() ...

    Go support for Protocol Buffers:Go 对 Google 协议缓冲区的支持-开源

    协议缓冲区目前支持在 Java、Python、Objective-C 和 C++ 中生成的代码。 使用我们新的 proto3 语言版本,您还可以使用 Dart、Go、Ruby 和 C#,以及更多的语言。 proto 包提供了操作 protobuf 消息的功能,例如克隆...

    TwitterAPI封装Objectwitter-C.zip

    Objectwitter-C 是一款稳定,成熟,全面的 Twitter REST/Streaming API 的 Objective-C 封装,其封装了 Twitter 的全部公开 API。由 @开源中国真理部部长 基于 STTwitter 开发,在 STTwitter 对 Twitter REST API ...

    FastEasyMapping:JSON的快速序列化和反序列化的工具

    快速轻松映射 注意 这是的分支, 是用于JSON映射的灵活,简单的框架。... 操作系统 9.0 watchOS 2.0 使用Xcode 8.3.2+构建 安装 可可豆 是Cocoa项目的依赖项经理。 您可以使用以下命令进行安装: $ gem inst

    一步一步学习_iOS_6_编程(第四版)

    第十五部分:Objective-C基础知识-介绍面向对象的编程 第十六部分:如何在你的iPhone App中发送邮件 第十七部分:持续改善Recipe App的详细视图控制器 第十八部分:在iOS 5中使用JSON编程 第十九部分:在.NET ...

Global site tag (gtag.js) - Google Analytics