iphone ios json解析流程,教程

來源:互聯網
上載者:User

以下大家友情支援一下:

做了一個產品,需要人氣支援一下,android和iphone上91市場搜尋#super junior粉絲團#,或者直接到頁面下載http://m.ixingji.com/m.html?p=X16,大家幫忙捧捧場

JSON 是現時流行的資料格式,與 XML 相比,JSON 更為輕巧。在傳輸相同資料時,JSON 在大部份情況也會較 XML 的檔案小,在手機網路上傳輸 JSON 亦會比 XML快。

在 iPhone Cocoa Touch Framework 中並沒有 Library 去操作 JSON 資料格式。幸好有一些人為 Objective C 製作了能夠操作 JSON資料格式的 Library
而我使用的是這一款: json-framework
下載完成後將整個 JSON 資料夾複製到Project 內,然後那一個 Class 要使用到JSON Library 只要引入 JSON.h 就可以了。

{    "glossary": {        "title": "example glossary",        "GlossDiv": {            "title": "S",            "GlossList": {                "GlossEntry": {                    "ID": "SGML",                    "SortAs": "SGML",                    "GlossTerm": "Standard Generalized Markup Language",                    "Acronym": "SGML",                    "Abbrev": "ISO 8879:1986",                    "GlossDef": {                        "para": "A meta-markup language, used to create markup languages such as DocBook.",                        "GlossSeeAlso": ["GML", "XML"]                    },                    "GlossSee": "markup"                }            }        }    }}

以上的資料我會放到一個 data.json 的檔案內。
現在讀取這個檔案:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"json"];    NSString *jsonStr = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];              SBJsonParser *parser = [[SBJsonParser alloc] init];    NSDictionary *json = [parser objectWithString:jsonStr error:nil];         NSDictionary *glossary = [json objectForKey:@"glossary"];    NSString *glossaryTitle = [glossary objectForKey:@"title"];         NSDictionary *glossDiv = [glossary objectForKey:@"GlossDiv"];    NSString *glossDivTitle = [glossDiv objectForKey:@"title"];         NSArray *glossSeeAlso = [[[[glossDiv objectForKey:@"GlossList"]                                objectForKey: @"GlossEntry"]                                     objectForKey: @"GlossDef"]                                         objectForKey: @"GlossSeeAlso"];         NSLog(@"Glossary Title: %@", glossaryTitle);    NSLog(@"GlossDiv Title : %@", glossDivTitle);         NSLog(@"GlossSeeAlso item 1: %@", [glossSeeAlso objectAtIndex:0]);    NSLog(@"GlossSeeAlso item 2: %@", [glossSeeAlso objectAtIndex:1]);

第 2 行是將檔案內容放到 NSString 內。
第 5 行創造一個 JSON Parser,準備將 JSON 字串轉換成 Object
第 6 行將 JSON 字串轉換成 NSDictionary,而這一個 NSDictionary 內的 Object 亦已經被 JSON Parser 轉換成相對應的 Object,例如: NSArrayNSDictionaryNSString 等等。
第 8 行是使用關鍵字 "glossary" 抽取 Object,因為這個 Object 是包含以下部份的資料:

{        "title": "example glossary",        "GlossDiv": {            "title": "S",            "GlossList": {                "GlossEntry": {                    "ID": "SGML",                    "SortAs": "SGML",                    "GlossTerm": "Standard Generalized Markup Language",                    "Acronym": "SGML",                    "Abbrev": "ISO 8879:1986",                    "GlossDef": {                        "para": "A meta-markup language, used to create markup languages such as DocBook.",                        "GlossSeeAlso": ["GML", "XML"]                    },                    "GlossSee": "markup"                }            }        }    }

第 9 行是使用以上的資料再加上關鍵字 "title" 去抽取內容,以上資料加上關鍵字 "title" 內的內容是 "example glossary",所以回傳的 Object 是一個 NSString
Object

第 14 行則是抽取 "GlossSeeAlso" 的內容,以內容則是以下這些:

["GML", "XML"]

如你所見,這是一個 Array, 所以回傳的 Object 是一個 NSArray Object

最後列印出來的內容會是以下這些:

2010-08-27 15:15:44.003 JSON[47655:207] Glossary Title: example glossary2010-08-27 15:15:44.049 JSON[47655:207] GlossDiv Title : S2010-08-27 15:15:44.050 JSON[47655:207] GlossSeeAlso item 1: GML2010-08-27 15:15:44.050 JSON[47655:207] GlossSeeAlso item 2: XML

如果 JSON 資料是經由網路去讀取,可以用以下方法:

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://pro.ctlok.com/data.json"]];NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];NSString *jsonStr = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];

範例下載: JSON.zip

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.