码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2015-10-19 18:53:53      阅读:255      评论:0      收藏:0      [点我收藏+]

标签:

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)

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

标签:

原文地址:http://www.cnblogs.com/nathan1987/p/4892499.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!