2012-08-30 105 views
0

我打電話用的getPath方法,像這樣我的web服務:AFNetwork與ASP.net 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?

回答

0

您可以使用NSJSONSerialization Class將您的NSData對象轉換爲NSArray。

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

這假設你知道你的JSON是數組類型而不是字典類型。

+0

是的工作,但不應該AFNetwork自動爲我做這個。我在Twitter的API上使用了相同的方法,並且它的工作非常完美 –

+1

AFNetworking不知道響應的格式是什麼,這就是爲什麼您將響應作爲原始數據(NSData)提供給您的原因。您應該適當地轉換它。 – jonkroll

+0

要使其自動工作,您不需要在AFNetwork中使用JSON特定的子類嗎? –