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 );
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 我們大家平時在開發 App 的時候,相信接觸最多的就是 JSON 數據了。只要你的 App 有讀取網絡數據的功能,...
    SwiftCafe閱讀 1,608評論 2 18
  • JSON JSON和XML都是需要解析的 JSON是一種輕量級的數據格式,一般用于數據交互服務器返回給客戶端的數據...
    JonesCxy閱讀 1,883評論 2 10
  • 1.服務器返回的數據: 對于服務器返回來的data,一般有兩種格式:JSON/XMLJSON:是民間的;XML:是...
    SoftKnife閱讀 554評論 0 5
  • JSON的簡單介紹 1.什么是JSON(1)JSON是一種輕量級的數據格式,一般用于數據交互(2)服務器返回給客戶...
    Mario_ZJ閱讀 691評論 0 0
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,973評論 19 139