iOS·HTTP那點事(2)JSON數據解析

說明:

Question:什么是JSON

  • JSON是一種輕量級的數據格式,一般用于數據交互
  • 服務器返回給客戶端的數據,一般都是JSON格式或者XML格式(文件下載除外)
  • JSON的格式很像OC中的字典和數組
 {"name": "jack","age": 10}
 {"names": ["jack","rose","jim"]}
  • 標準JSON格式的注意點:key必須用雙引號
  • 在iOS中,JSON的常見解析方案有4種
  • 第三方框架:JSONKit、SBJson、TouchJSON(性能從左到右,越差)
  • 蘋果原生(自帶):NSJSONSerialization(性能最好,iOS 5.0之后發布,現在主流的JSON解析方法)

JSON轉換為OC數據類型

要想從JSON中挖掘出具體數據,得對JSON進行解析

JSON OC
大括號{} NSDictionary @{}
中括號[] NSArray @[]
雙引號"" NSString @""
數字10、10.8 NSNumber @10、@10.8
true NSNumber @1
false NSNumber @0
null NSNull

返回參數說明

返回參數說明.png

返回示例(Json)

返回示例(Json).png

NSJSONSerialization的常見方法

  • JSON數據 OC對象
+(id)JSONObjectWithData:(NSData*)data options:(NSJSONReadingOptions)opterror:(NSError**)error;
  • OC對象 JSON數據
+(NSData*)dataWithJSONObject:(id)objoptions:(NSJSONWritingOptions)opterror:(NSError**)error;

Dome代碼演示


    // 設置請求路徑
    NSURL *url = [NSURL URLWithString:@"http://api.k780.com:88/?app=weather.future&weaid=1&&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json"];
    // 創建請求對象
    NSURLRequest *reuqest = [[NSURLRequest alloc] initWithURL:url];
    
    // 用NSURLConnection發送異步GET請求
    [NSURLConnection sendAsynchronousRequest:reuqest queue:[[NSOperationQueue alloc]init] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) 
     {
       // 解析JSON
       NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
       NSLog(@"%@", dict);
     }];
  • 運行結果:


    運行結果.png
  • 注意點:
  • 如果沒有特殊要求NSJSONSerialization方法中的options選kNilOptions
  • NSJSONReadingOptions
    • NSJSONReadingMutableContainers = (1UL << 0)
      • 創建出來的數組和字典就是可變
    • NSJSONReadingMutableLeaves = (1UL << 1)
      • 數組或者字典里面的字符串是可變的
    • NSJSONReadingAllowFragments
      • 允許解析出來的對象不是字典或者數組,比如直接是字符串或者NSNumber

面向模型開發

MJExtension框架
應用場景:

[ 字典1,
 字典2,
 字典3 ]

如果每個字典都是一個模型,可以用

NSArray *modelArray = [模型類名 objectArrayWithKeyValuesArray:字段數組];
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • JSON JSON和XML都是需要解析的 JSON是一種輕量級的數據格式,一般用于數據交互服務器返回給客戶端的數據...
    JonesCxy閱讀 1,877評論 2 10
  • JSON解析 JSON簡單介紹 JSON是一種輕量級的數據格式,一般用于數據交互。服務器返回給客戶端的數據,一般都...
    擱淺的青蛙閱讀 1,738評論 0 4
  • 1.服務器返回的數據: 對于服務器返回來的data,一般有兩種格式:JSON/XMLJSON:是民間的;XML:是...
    SoftKnife閱讀 554評論 0 5
  • JSON的簡單介紹 1.什么是JSON(1)JSON是一種輕量級的數據格式,一般用于數據交互(2)服務器返回給客戶...
    Mario_ZJ閱讀 682評論 0 0
  • 你瀑布般的長發, ...
    bbbin閱讀 347評論 0 0