iPhone ios json解析プロセス、チュートリアル


以下、皆さんの友情を応援します.
製品を作って、人気の支持を必要として、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 フォルダをプロジェクトにコピー 内、そしてその 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に変換します.たとえば、次のようにします. NSArray, NSDictionary, NSString などなど.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"]
ご覧の通り、これは アリー、だから返事は Object ひとつ NSArray Object.
最後に印刷された内容は次のとおりです.
2010-08-27 15:15:44.003 JSON[47655:207] Glossary Title: example glossary
2010-08-27 15:15:44.049 JSON[47655:207] GlossDiv Title : S
2010-08-27 15:15:44.050 JSON[47655:207] GlossSeeAlso item 1: GML
2010-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