iOS-JSON数据解格式

json数据解析

json的概念

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。
在实际开发中经常使用JSON来获取服务器上的数据,并通过解析json数据获取我们想要的数据

iOS开发使用 NSJSONSerialization(序列化)类解析json数据
NSJSONSerialization提供了Json数据封包、Json数据解析

NSJSONSerialization将JSON数据转换为NSDictionary或NSArray
解包方法,将NSDictionary、NSArray对象转换为JSON数据(可以通过调用isValidJSONObject来判断NSDictionary、NSArray对象是否可以转换为JSON数 据)封包

json数据封包

   NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"value1",@"key1",@"value2",@"key2",@"value3",@"key3", nil];

      // isValidJSONObject判断对象是否可以构建成json对象
      if ([NSJSONSerialization isValidJSONObject:dic]){
          NSError *error;

          // 创造一个json从Data, NSJSONWritingPrettyPrinted指定的JSON数据产的空白,使输出更具可读性。
          NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&error];

          NSString *json =[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
          NSLog(@"json data:%@",json);
      }

json数据解析

  NSError *error;
  //加载一个NSURL对象
  NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://m.weather.com.cn/data/101120101.html"]];

  //将请求的url数据放到NSData对象中
  NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];  
  
//iOS自带解析类NSJSONSerialization从response中解析出数据放到字典中
  NSDictionary *weatherDic = [NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingMutableLeaves error:&error];

  NSDictionary *weatherInfo = [weatherDic objectForKey:@"weatherinfo"];

  NSString *text = [NSString stringWithFormat:@"今天是 %@  %@  %@  的天气状况是:%@  %@ ",[weatherInfo objectForKey:@"date_y"],[weatherInfo objectForKey:@"week"],[weatherInfo objectForKey:@"city"], [weatherInfo objectForKey:@"weather1"], [weatherInfo objectForKey:@"temp1"]];    NSLog(@"weatherInfo:%@", text );

json解析过程示例

  NSError *error;
//加载一个NSURL对象
NSURLRequest\*request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://m.weather.com.cn/data/101180601.html"]];

//将请求的url数据放到NSData对象中
NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

//iOS自带解析类NSJSONSerialization从response中解析出数据放到字典中
NSDictionary *weatherDic = [NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingMutableLeaves error:&error];

NSDictionary *weatherInfo = [weatherDic objectForKey:@"weatherinfo"];

txtView.text = [NSString stringWithFormat:@"今天是 %@ %@ %@ 的天气状况是:%@ %@ ",[weatherInfo objectForKey:@"date_y"],[weatherInfo objectForKey:@"week"],[weatherInfo objectForKey:@"city"], [weatherInfo objectForKey:@"weather1"], [weatherInfo objectForKey:@"temp1"]];

NSLog(@"weatherInfo字典里面的内容为---%@", weatherDic );

你可能感兴趣的:(iOS-JSON数据解格式)