iOS網(wǎng)絡(luò)數(shù)據(jù)解析之JSON解析

  • JSON(JavaScript Object Notation)是一種輕量級的數(shù)據(jù)交換格式,采用完全獨(dú)立于語言的文本格式,易于閱讀和編寫,同時也易于機(jī)器解析和生成
  • JSON文件有兩種結(jié)構(gòu):
    1 對象:"名稱/值"對的集合,以"{"開始,以"}"結(jié)束,名稱和值中間用":"隔開
    2 數(shù)組:值的有序列表,以"["開始,以"]"結(jié)束,中間是數(shù)據(jù),數(shù)據(jù)以","分隔
    (JSON中的而數(shù)據(jù)類型:字符串、數(shù)值BOOL、對象、數(shù)組)
    例如:
    {
    "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進(jìn)行JSON解析

第一步:獲取JSON文件路徑
第二步:轉(zhuǎn)換為NSData類型
第三步:解析JSON數(shù)據(jù)
代碼如下:
<pre><code>

  • (void)jsonParser {

    //step1:文件路徑

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

    //step2:轉(zhuǎn)換為NSData類型

    NSData *jsonData = [NSData dataWithContentsOfFile:jsonPath];

    //step3.解析json數(shù)據(jù)

    NSError *error;

    //第二個參數(shù):

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

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

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

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

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容