iOS網絡數據解析之JSON解析

  • JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,采用完全獨立于語言的文本格式,易于閱讀和編寫,同時也易于機器解析和生成
  • JSON文件有兩種結構:
    1 對象:"名稱/值"對的集合,以"{"開始,以"}"結束,名稱和值中間用":"隔開
    2 數組:值的有序列表,以"["開始,以"]"結束,中間是數據,數據以","分隔
    (JSON中的而數據類型:字符串、數值BOOL、對象、數組)
    例如:
    {
    "reason": "success",
    "result": [
    {
    "movieId": "215977",
    "movieName": "森林孤影",
    "pic_url": "http://v.juhe.cn/movie/picurl?2583247"
    },
    {
    "movieId": "215874",
    "movieName": "從哪來,到哪去",
    "pic_url": "http://v.juhe.cn/movie/picurl?2583542"
    },
    {
    "movieId": "215823",
    "movieName": "有一天",
    "pic_url": "http://v.juhe.cn/movie/picurl?2583092"
    }
    ],
    "error_code": 0
    }
使用Foundation進行JSON解析

第一步:獲取JSON文件路徑
第二步:轉換為NSData類型
第三步:解析JSON數據
代碼如下:
<pre><code>

  • (void)jsonParser {

    //step1:文件路徑

    NSString *jsonPath = [[NSBundle mainBundle] pathForResource:@"MovieList" ofType:@"txt"];

    //step2:轉換為NSData類型

    NSData *jsonData = [NSData dataWithContentsOfFile:jsonPath];

    //step3.解析json數據

    NSError *error;

    //第二個參數:

    //NSJSONReadingMutableContainers = (1UL << 0),解析完成返回的為可變的數組或者字典類型。

    //NSJSONReadingMutableLeaves = (1UL << 1),解析完成返回的類型為NSMutableString,在iOS7及其以上不太好用。

    //NSJSONReadingAllowFragments = (1UL << 2)允許json串最外層既不是數組也不是字典,但必須是有效的json片段,例如json串可以是一段字符串。

    NSDictionary *resultDic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingAllowFragments error:&error];

    if (resultDic) {//判斷解析是否得到正常數據
    //判斷當前對象是否支持json格式
    if([NSJSONSerialization isValidJSONObject:resultDic]){
    //將字典轉換為json串
    NSData *strData = [NSJSONSerialization dataWithJSONObject:resultDic options:NSJSONWritingPrettyPrinted error:&error];
    //判斷strData是否有值
    if (strData) {
    //將data轉換為字符串
    NSString *str = [[NSString alloc] initWithData:strData encoding:NSUTF8StringEncoding];
    NSLog(@"%@",str);
    }
    }
    }
    }

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

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,837評論 18 139
  • iOS網絡編程讀書筆記 Facade Tester客戶端門面模式的實例(被動版本化) 被動版本化,所以硬編碼URL...
    melouverrr閱讀 1,619評論 3 7
  • 周五那天筆試過了,回到了家,今天再次踏上去廈門的路,這次是我一個月以來第三次去廈門了,也是最后一次,一個月三顧廈門...
    夏十里閱讀 146評論 0 0
  • 《知識大融通》是被譽為“當代達爾文”、“知識巨人”的愛德華?威爾遜所著,它還有個副標題叫“二十一世紀的科學與人文”...
    蕙茝_如常閱讀 7,088評論 5 10
  • 秋風清,秋月明, 落葉聚還散,寒鴉棲復驚 相思相見知何日,此時此夜難為情。
    達魯花赤閱讀 203評論 0 0