zoukankan      html  css  js  c++  java
  • 关于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(@"-------------------------------------------------------"); }
  • 相关阅读:
    h5实现 微信的授权登录
    js判断浏览器的环境(pc端,移动端,还是微信浏览器)
    动态判断时间插件显示到年月日时分秒
    H5发起微信支付
    Vue项目结合vux使用
    Swift学习笔记一:常量和变量
    iOS开发之解决系统数字键盘无文字时delete键无法监听的技巧
    Swift3.0之获取设备识别号deviceNo和保存账户AccountId
    Swift3.0之自定义debug阶段控制台打印
    Xcode之command+/快捷键添加注释不起作用
  • 原文地址:https://www.cnblogs.com/yuanjianguo2012/p/3740685.html
Copyright © 2011-2022 走看看