AFNetwork + JSON

时间:2013-08-23 13:16:50

标签: ios objective-c nsarray nsdictionary afnetworking

这是我第一次使用AFNetwork,在我使用ASIHTTP请求之前,我无法重复使用我的代码,但无论如何,我在使用JSON提取时遇到问题,我似乎无法弄明白为什么,所以我希望有人能告诉我光明

这是代码

[httpClient registerHTTPOperationClass:[AFJSONRequestOperation class]];
[httpClient postPath:@"" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSString *responseStr = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
    NSDictionary *results = (NSDictionary *) responseStr;
    NSArray *pets = [results objectForKey:@"animals"];

这是JSON

   {
  "animals" : [
  {
     "type" : "cat",
     "weight" : "2lbs"      
},
  {
     "type" : "cat",
     "weight" : "15oz"
  }
   ]
}

不知怎的,我总是得到 - [__ NSCFString objectForKey:]:在从字典解析NSArray时发送到实例0x7355ab0'的无法识别的选择器,我之前没有遇到过麻烦......我错过了什么吗? >,<

尝试并尝试后.........

感谢大家抽出时间回答我的问题。我不知道为什么它不起作用,但我结果使用NSJSONSerialization,现在数组运行完美。

[httpClient registerHTTPOperationClass:[AFJSONRequestOperation class]];
[httpClient postPath:@"" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSError*error;
    NSDictionary *results = [NSJSONSerialization JSONObjectWithData:responseObject options:kNilOptions error:&error];
    NSArray *pets = [results objectForKey:@"animals"];

2 个答案:

答案 0 :(得分:0)

This link对我来说非常有用,可以从我的服务器发送和获取JSON对象。

希望它会对你有所帮助。

答案 1 :(得分:0)

我也很久以前就遇到过这个问题,同样有一个小的解决方法

AFJSONRequestOperation中的

转到方法responseJSON并更改

self.responseJSON = [NSJSONSerialization JSONObjectWithData:data options:self.JSONReadingOptions error:&error];

到这个

self.responseJSON = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];