2012-05-01 6 views
0

のNSDictionaryの値から取得します。 ios5 ローカルバンドルのJSONファイルを解析します。 各項目を個別に読んでください。 私が働いているコードの後に​​JSONファイルのサンプルが続きます。 私は、私が何が起こっているのか、そして私が援助を得るために必要なサンプルコードについても説明しています。あなたは私の解釈を訂正することを歓迎します。は私がネイティブにObjCアプリをやってNSDictionaries

============================================== ===============================

{"a":[ {"b":{"Q01": "A01 「Q02」:「B01」、「Q03」:「C01」、「Q04」:「D01」、「Q05」:「E01」、「Q06」:「X」、「C1」:「NR」、 "CABG": "NR"、 "PCI": "NR"}}、 { "B":{ "Q01": "A01"、 "Q02": "B01"、 "Q03": "C01"、」 「Q04」:「D01」「Q05」「E02」「Q06」「X」「C1」「I」「C1IND」「20」「C1SCORE」「3」「CABG」 : "NR"、 "PCI": "NR"}}、 { "B":{ "Q01": "A01"、 "Q02": "B01"、 "Q03": "C01"、 "Q04": "D01"、 "Q05": "E03"、 "Q06": "X"、 "C1"、 "NR"、 "CABG": "NR"、 "PCI": "NR"}}、 { "B 「Q01」、「Q02」、「B01」、「Q03」、「C01」、「Q04」:「D01」、「Q05」:「E04」、「Q06」:「X」、 、 "C1"、 "NR"、 "CABG": "NR"、 "PCI":{ "Q01": "A01"、 "Q02":{ "B" "NR"}}、 "B01"、 "Q03": "C01" 「Q04」:「D01」「Q05」「E05」「Q06」「X」「C1」「NR」「CABG」「NR」「PCI」「NR」}

]}

私のコードは次のようになります。

NSString* filePath = [[NSBundle mainBundle] pathForResource:@"nonacs" ofType:@"json"];  

NSError* error = nil; 
NSData *jsonData = [NSData dataWithContentsOfFile:filePath options:NSDataReadingMappedIfSafe error:&error]; 


if (jsonData) { 

    id jsonObjects = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error]; 

    if (error) { 
     NSLog(@"error is %@", [error localizedDescription]); 
     // Handle Error and return 
     return; 
    } 

    //NSArray *keys = [jsonObjects allKeys];  
    // not necessary becuase I know the Root key is a single "a" 

    NSString* jsonString = [NSString stringWithFormat:@"%@",[jsonObjects objectForKey:@"a"]]; 


    tLabel01.text = [NSString stringWithFormat:@"jsonData Length is = %d", [jsonData length]]; 

    NSDictionary* dict01 = [[NSDictionary alloc] initWithDictionary:jsonObjects]; 

    l2.text = [NSString stringWithFormat:@"dict01 length = %d", dict01.count]; 


    NSDictionary* dict02 =[[NSDictionary alloc] initWithDictionary:dict01]; 
    l3.text = [NSString stringWithFormat:@"dict2.length = %d", dict02.count]; 


    //NSArray* array01 = [[NSArray alloc] initWithObjects:dict01, nil]; 

    //NSArray *allvalues = [jsonObjects allValues];  
    //NSArray *allvalues = [[jsonObjects initWithContentsOf ] allValues]; 


    //l3.text = [NSString stringWithFormat:@"allvalues.count = %d", allvalues.count];   

    //NSDictionary *dictB = [dict01 objectForKey:@"b"]; 


    //l3.text = [NSString stringWithFormat:@"dictB.count = %d", dictB.count]; 

    l3.text = [NSString stringWithFormat:@"jsonObject count = %d", [[jsonObjects objectForKey:@"a"] count]]; 
    // this works really well... except it returned 1700, and there should only be 1550 

    //l4.text = @"nada"; 
    //[[jsonObjects objectForKey:@"a"] count]]   

    NSArray *array = [jsonObjects objectForKey:@"a"]; 
    NSArray *arrayVariable = [array objectAtIndex:0]; 

    //l4.text = [NSString stringWithFormat:@"Q01 = %@", [arrayVariable objectForKey: @"Q01"]];   

    //l4.text =[NSString stringWithFormat:@"arrayVariable count = %d", arrayVariable.count]; 

    NSArray *arrayb = [jsonObjects objectForKey:@"b"];   
    l4.text = [NSString stringWithFormat:@"arrayb count = %d", arrayb.count]; 





    bTV01.text = jsonString; 


    }; 

============================ ===============================

ルートオブジェクトは、単一のキー "a"を持つNSDictionaryです。 その値に対応する値はNSArrayです。 配列には、単一のキー "b"を持つNSDictionariesが含まれています。 B NSDictionariesには別のNSDictionaryが含まれています。

誰かが私に "Q02" のために

ください感謝

を第三B NSDictionaryの値を表示するためのコードを示すことができ

答えて

0

[[[ルートobjectForKey:@ ""] valueForKey: "B" @] objectAtIndex :2]

関連する問題