• 关于iOS数据操作方式详解(二)— Jason数据解析


      作为数据解析的另外一种方式,Jason在当前的程序设计中被经常使用到,其干净整洁的数据结构,简洁的数据处理方法被大多数人所接受,那么现在我们来了解一下对于Jason数据的处理解析方法:

      同样的首先我们给出一个Jason文件的部分内容: 

    [{
      "phone": [
                "12345678",
                "87654321"
                ],
      "name": "qingyun1",
      "age": 100,
      "address": {
      "country": "china",
      "province": "zhengzhou"
      },
      "married": false
      }]

      现在我们的问题是如何将里面的数据解析出来以供我们使用:

      (一) 获取Jason文件的路径

    NSURL *fileUrl = [[NSBundle mainBundle] URLForResource:@"personal" withExtension:@"json"];

      

      (二) 解析出Jason里面的数据存储到数组里,这里可以有两种方法:第三方的JasonKit库和系统提供的Jason解析方式

       第三方的Jason库解析方式:

        NSString *strJson = [[NSString alloc] initWithContentsOfURL:fileUrl encoding:NSUTF8StringEncoding error:nil];
        NSArray *pesons = [strJson objectFromJSONString];

       使用系统提供的Jason解析方式:

     //由于采用系统提供的json解析来, 需要传入的json数据是NSData类型,所以我们需要将文件时在数据读取到内存,并转换为NSData    
      NSData *jsonData = [[NSData alloc] initWithContentsOfURL:fileUrl];   
    //     通过使用NSJSONSerialization 的工厂方法, 直接解析json串,
      NSMutableArray * persons = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:nil];

      (三) 按照Jason串的结构来解析出具体的数据

    //    根据JSON串的结构来解析具体的数据
        for (NSDictionary *jsonResult in persons) {
            NSArray *phoneNumbers = [jsonResult objectForKey:@"phone"];
            for (NSString *number  in phoneNumbers) {
                NSLog(@"phoneNumber is %@",number);
            }
            NSString *name = [jsonResult objectForKey:@"name"];
            NSLog(@"person's name is %@",name);
            
            NSNumber *age = [jsonResult objectForKey:@"age"];
            NSLog(@"person's age is %d",age.intValue);
            
            BOOL isMarried = [[jsonResult objectForKey:@"married"] boolValue];
            NSLog(@"%@",((isMarried) ? @"Married":@"meilaopo"));
    NSDictionary
    *dicAddress = [jsonResult objectForKey:@"address"]; NSString *strCountry = [dicAddress objectForKey:@"country"]; NSString *strProvince = [dicAddress objectForKey:@"province"]; NSLog(@"person's address is %@, %@",strCountry, strProvince); NSLog(@"-------------------------------------------------------"); }
  • 相关阅读:
    我的航拍直升机 控制基站软件的编写历程(2.2)——Qt Creator 版本控制系统
    windows下QT开发环境建立方法
    QT 4.5 windows版本 安装问题 及 Junction 使用
    各种平台下编译qt工程
    华为面试题
    strcpy,strncpy,strlcpy,memcpy
    QT/E 更换字体问题
    Linux设备驱动编程中断处理
    oracle数据库连接池的使用
    Windows下QT的安装
  • 原文地址:https://www.cnblogs.com/yuanjianguo2012/p/3740685.html
Copyright © 2020-2023  润新知