iOS开发-使用NSJSONSerialization解析JSON数据

1.JSON数据结构和解析

1.1JSON数据结构

JSON:JavaScript 对象表示法(JavaScript Object Notation)。

JSON 是存储和交换文本信息的语法。类似 XML。

JSON 比 XML 更小、更快,更易解析。

JSON 值可以是:

数字(整数或浮点数)

字符串(在双引号中)

逻辑值(true 或 false)

数组(在方括号中)

对象(在花括号中)

null

JSON 对象在花括号中书写:

对象可以包含多个名称/值对:名称和值中间使用“:”隔开,类似OC中的字典。

{ "firstName":"John" , "lastName":"Doe" }

JSON 数组在方括号中书写:

数组可包含多个对象:

{

"employees": [

{ "firstName":"John" , "lastName":"Doe" },

{ "firstName":"Anna" , "lastName":"Smith" },

{ "firstName":"Peter" , "lastName":"Jones" }

]

}

在上面的例子中,对象 "employees" 是包含三个对象的数组。每个对象代表一条关于某人(有姓和名)的记录。

1.2JSON解析过程( 使用NSJSONSerialization

文件:date_JSON.txt

文件内容:

[
{
  "sender"  : "Sam",
  "receiver": "Jack",
  "content" : "今晚放学操场见。",
  "date"    : "2015年10月19日"
},
{
  "sender"  : "Bob",
  "receiver": "Marry",
  "content" : "今晚放学操场见。",
  "date"    : "2015年10月19日"

}

]

//获取文件路径
    NSString *filePath=[[NSBundle mainBundle]pathForResource:@"date_JSON" ofType:@"txt"];
    //将文件导入data
    NSData * data=[NSData dataWithContentsOfFile:filePath];
    //使用JSON解析
    NSArray * array=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
   
    //初始化数组
    self.dataArray=[NSMutableArray array ];
   
    //将得到的数据赋值给对象,并放入数组
    for (NSDictionary *d in array) {
        Message * m=[[Message alloc]init];
        [m setValuesForKeysWithDictionary:d];
        [self.dataArray addObject:m];
    }
   
      //显示解析得到的文档
        for (Message *m in self.dataArray) {
            NSLog(@"\n");
            NSLog(@"sender:%@",m.sender);
            NSLog(@"receiver:%@",m.receiver);
            NSLog(@"content:%@",m.content);
            NSLog(@"date:%@",m.date);
        }

注意:

#import "Message.h"

@implementation Message
//未定义的key,防止KVC崩溃
//没有找到的对应的Key,就会执行该方法

-(void)setValue:(id)value forUndefinedKey:(NSString *)key{}

@end

运行结果:

2015-10-19 17:30:29.297 [3182:264087] 

2015-10-19 17:30:29.297[3182:264087] sender:Sam

2015-10-19 17:30:29.298[3182:264087] receiver:Jack

2015-10-19 17:30:29.298[3182:264087] content:今晚放学操场见。

2015-10-19 17:30:29.298[3182:264087] date:20151019

2015-10-19 17:30:29.298[3182:264087] 

2015-10-19 17:30:29.298[3182:264087] sender:Bob

2015-10-19 17:30:29.298[3182:264087] receiver:Marry

2015-10-19 17:30:29.298[3182:264087] content:今晚放学操场见。

2015-10-19 17:30:29.298[3182:264087] date:20151019

源代码下载(Xcode7.0.1)

时间: 2024-08-08 01:28:44

iOS开发-使用NSJSONSerialization解析JSON数据的相关文章

iOS开发网络篇—发送json数据给服务器以及多值参数

iOS开发网络篇—发送json数据给服务器以及多值参数 一.发送JSON数据给服务器 发送JSON数据给服务器的步骤: (1)一定要使用POST请求 (2)设置请求头 (3)设置JSON数据为请求体 代码示例: 1 #import "YYViewController.h" 2 3 @interface YYViewController () 4 5 @end 6 7 @implementation YYViewController 8 9 - (void)viewDidLoad 10

【转】iOS开发网络篇—发送json数据给服务器以及多值参数

原文: http://www.cnblogs.com/wendingding/p/3950132.html 一.发送JSON数据给服务器 发送JSON数据给服务器的步骤: (1)一定要使用POST请求 (2)设置请求头 (3)设置JSON数据为请求体 代码示例: 1 #import "YYViewController.h" 2 3 @interface YYViewController () 4 5 @end 6 7 @implementation YYViewController 8

IOS开发使用NSJSONSerialization、JSONKit、SBJson、TouchJson四种方式解析Json数据

概括:JSON数据解析可以使用苹果自带的NSJSONSerialization方式,也可以使用第三方框架,比如JSONKit.SBJson.TouchJSON等,框架的使用方式比较简单,但性能比ios原生方式差很多,建议使用原生方式. 1 NSJSONSerialization,IOS原生 /** *  解析JSON数据 */ -(void) analysisJSON{ // 获取URL NSURL *url = [[NSURL alloc] initWithString:@"http://lo

iOS多线程与网络开发之解析json数据

郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额任意.重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 游戏官方下载:http://dwz.cn/RwTjl 游戏视频预览:http://dwz.cn/RzHHd 游戏开发博客:http://dwz.cn/RzJzI 游戏源代码传送:http://dwz.cn/Nret1 A.iOS中json的基本使用 1.解析json数据 (1)json反序列化 对象{}格式

iOS开发-简单解析JSON数据

什么是JSON ? JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外) ? JSON的格式很像OC中的字典和数组 ? {"name" : "Jack", "age" : 10} {"name" : ["jack", "rose", "jim"]} ? 标准JSON格式的注意点: key必须用双

iOS开发——网络Swift篇&JSON与XML数据解析

JSON与XML数据解析 JSON数据解析(内置NSJSONSerialization与第三方JSONKit) 一,使用自带的NSJSONSerialization 苹果从IOS5.0后推出了SDK自带的JSON解决方案NSJSONSerialization,这是一个非常好用的JSON生成和解析工具,效率也比其他第三方开源项目高. NSJSONSerialization能将JSON转换成Foundation对象,也能将Foundation对象转换成JSON,但转换成JSON的对象必须具有如下属性

Android 网络请求json数据,解析json数据,生成对应的java bean类一步到位,快速开发

Android 网络请求一般都涉及到图片和JSON数据,怎样快速的请求网络JSON数据,解析JSON数据,并且一步生成自己想要的Java bean实体类?这个涉及到Android 开发效率的问题.由于接触Android 网络这方面比较多,自然就找到一些好的方法来快速开发Android 网络模块的相关内容,接下来就为大家揭晓 一步快速请求,解析JSON 数据生成对应的Java bean实体类的方法. 注:我们先把思路讲解下吧: 1.网络请求JSON数据代码可以自己写,当然我还是推荐使用网络上开源的

解析json数据

//找到json路径 NSString *filePath = [[NSBundlemainBundle] pathForResource:@"us_box"ofType:@"json"]; //从路径中获取数据 NSData *data = [NSDatadataWithContentsOfFile:filePath]; //解析json------>转换成NSDictionary或者是NSArray //在iOS5.0之前解析json数据  使用第三方js

我的Android进阶之旅------>解决Jackson、Gson解析Json数据时,Json数据中的Key为Java关键字时解析为null的问题

1.问题描述 首先,需要解析的Json数据类似于下面的格式: { ret: 0, msg: "normal return.", news: [ { id: "NEW2016062800875700", from: "腾讯新闻客户端", qqnews_download_url: "http://inews.qq.com/m?refer=openapi_for_xiaotiancai", articletype: "1&