JSON解析笔记

来源:互联网 发布:ug8.0编程怎么设置速 编辑:程序博客网 时间:2024/06/09 08:54


if 0/1

代码一 重要!!!

else

代码二

endif

注意:如果if后面是0的话就执行代码二,如果if后面是1 就执行代码1


一,JSON简介:
JSON 是一种轻量级的数据交换格式,文件内容类似于oc的字典中的键值对。

二,JSON语法:
键值对表示:键名用双引号括起来,冒号后面跟值。值为双引号括起来的字符串/中括号括起来的数组/大括号括起来的字典形式。
其值类型可以对应oc类型:
1,数字:整数或者是浮点数
2,字符串:在双引号中
3,逻辑值:ture或false
4,数组:在大括号中
5,字典:在大括号中
6,null:空值

三,JSON结构:
JSON 有数组和字典两种结构,通过这两种结构可以表示各种复杂结构。

四,JSON解析:
1,解析本地文件。
//1,根据路径获得文件中的数据赋值给字符串
NSString *jsonStr = [NSString stringWithContentsOfFile:mypath encoding:NSUTF8StringEncoding error:nil];
NSLog(@”jsonStr=%@”,jsonStr);

    //2,把字符串转化为NSData数据    NSData *data = [jsonStr dataUsingEncoding:NSUTF8StringEncoding];    NSLog(@"data=%@",data);    //把NSData数据存储到字典中去   NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];2,解析网络上的。

1>//1,把网络地址字符串转化成url
NSURL *url = [NSURL URLWithString:myURL];

//2,把从URL上获得的数据转化成NSData数据NSData *data = [NSData dataWithContentsOfURL:url];//3,把获得的数据通过NSJSONSerialization转化成字典NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data    options:NSJSONReadingMutableContainers error:nil ];NSLog(@"%@",dic);创建数据模型,把获得 的数据给数据模型赋值(重要!!)数据模型就是一个类,有成员变量,如果仅仅是数据模型的话一般没有其他方法,要实现-(NSString *)description方法//三层字典

2> for (id obj in [[[dic objectForKey:@”root”] objectForKey:@”books”] objectForKey:@”book”]) {

    //创建一个数据模型book    JWCMBook *book = [[JWCMBook alloc]init];    book.bookid = [obj objectForKey:@"-id"];    book.language = [obj objectForKey:@"-language"];    //注意下面这一步    book.authorArr = [NSMutableArray arrayWithObject:[[obj objectForKey:@"author"] objectForKey:@"name"]];    book.name = [obj objectForKey:@"name"];    //book.price = [[obj objectForKey:@"price"] floatValue];    book.summary = [obj objectForKey:@"summary"];    /*     如果解析出得字典键与成员变量名完全相同,就可以用[book setValuesForKeysWithDictionary:obj]比较方便,由于解析出的信息是(重要!!!)     {     "-id" = 3;     "-language" = en;     author =                     {     name = "JK\U7f57\U7433";     };     name = "\U54c8\U5229\U6ce2\U727     price = "365.00";     summary = "\U4e3b\U4eba\U516c     其中"-id" = 3;     "-language" = en;     这两个变量名和本类的成员变量名不同所以无法使用。     */    //[book setValuesForKeysWithDictionary:obj];    //添加到数组当中去    [self.bookArr addObject:book];}//呐喊
0 0