0

次のように getPath メソッドを使用して Web サービスを呼び出します。

[[AFTwitterAPIClient sharedClient] getPath:@"GetWineCategoryList"
                                parameters:parameters success:^(AFHTTPRequestOperation *operation, id JSON) {
                                    NSLog(@"JSON = %@",JSON);
                                    NSMutableArray *mutableTweets = [NSMutableArray arrayWithCapacity:[JSON count]];
                                    for (NSDictionary *attributes in mutableTweets) {
                                        Tweet *tweet = [[Tweet alloc] initWithAttributes:attributes];
                                        [mutableTweets addObject:tweet];
                                    }

                                    if (block) {
                                        block([NSArray arrayWithArray:mutableTweets], nil);
                                    }
                                } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
                                    if (block) {
                                        block([NSArray array], error);
                                    }
                                }];

常に NSData として出力されます。この NSData を文字列に変換すると、JSON 文字列が得られます。

JSON = <5b7b2243 61746567 6f72794e 616d6522 3a224f54 48455222 7d2c7b22 43617465 676f7279 4e616d65 223a2252 4544227d 2c7b2243 61746567 6f72794e 616d6522 3a22524f 5345227d 2c7b2243 61746567 6f72794e 616d6522 3a225748 49544522 7d5d>

NSArray に変換されないのはなぜですか?

4

1 に答える 1

0

NSJSONSerialization クラスを使用して、NSData オブジェクトを NSArray に変換できます。

NSArray *array = (NSArray*)[NSJSONSerialization JSONObjectWithData:JSON 
                                                 options:0
                                                   error:&error];

これは、JSON が辞書型ではなく配列型であることを知っていることを前提としています。

于 2012-08-30T05:10:43.360 に答える