0

jsonオブジェクトを解析するためのチュートリアルで、コードのこの部分を見つけました。

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    NSLog(@"connectionDidFinishLoading");
    NSLog(@"Succeeded! Received %d bytes of data",[self.responseData length]);

    // convert to JSON
    NSError *myError = nil;
    NSDictionary *res = [NSJSONSerialization JSONObjectWithData:self.responseData options:NSJSONReadingMutableLeaves error:&myError];

    // show all values
    for(id key in res) {

        id value = [res objectForKey:key];

        NSString *keyAsString = (NSString *)key;
        NSString *valueAsString = (NSString *)value;

        NSLog(@"key: %@", keyAsString);
        NSLog(@"value: %@", valueAsString);
    }

    // extract specific value...
    NSArray *results = [res objectForKey:@"results"];

    for (NSDictionary *result in results) {
        NSString *icon = [result objectForKey:@"icon"];
        NSLog(@"icon: %@", icon);
    }

}

JSONオブジェクトがその形式の場合、そのコードを使用してデータを解析することができました。

{"data_1":0,"data_2":0,"Plato 1":0,"data_3":0....}そして、data_1などの名前の特定のキーを検索していました。

今、私はDBを介してデータをフェッチしているので、JSONオブジェクトは配列です。

JSONオブジェクトは次の形式です。

[{"0":"1","id":"1","1":"text1","image":"text2","2":"0"}]

どのような変更を加える必要がありますか?

4

2 に答える 2

1

あなたの例は単に間違っています。一般的なケースでは、解析結果をNSObjectポインターに受け取り、その型を。でテストする必要がありますisKindOfClass。返されるのはNSDictionaryではなく、NSDictionaryである1つのエントリを含むNSArrayです。

于 2012-09-11T11:40:56.610 に答える
-1
NSArray *calArray=[//---get columns from DB----//];
if (calArray) 
{
    for (int j=0; j<[calArray count]; j++) 
    {
        NSDictionary *dct=(NSDictionary *)[calArray objectAtIndex:j];
        NSString *string=(NSString *)[dct objectForKey:@"your_key"];
        [your_array addObject:string];

       // repeat the above code for more keys.
    }
}
于 2012-09-11T12:12:54.510 に答える