【问题标题】:JSON goes into a dictionary nicely, but objectForKey errorsJSON 很好地进入字典,但 objectForKey 错误
【发布时间】:2012-04-04 02:42:56
【问题描述】:

我有一个服务于 JSON 的 RESTful API。我这样称呼它:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    dispatch_async(kBgQueue, ^{
        NSData* data = [NSData dataWithContentsOfURL: 
                        kProjectList];
        [self performSelectorOnMainThread:@selector(fetchedData:) 
                               withObject:data waitUntilDone:YES];
    });
}

然后我有我的 fetchedData 方法:

- (void)fetchedData:(NSData *)responseData {
    //parse out the json data
    NSError* error;
    NSDictionary* json = [NSJSONSerialization 
                          JSONObjectWithData:responseData //1

                          options:kNilOptions 
                          error:&error];
    //NSArray *projects = [json objectForKey:@"name"]; //2

    NSLog(@"name: %@", json); //3
}

如果我取消注释 //NSArray 行,我会得到 -[__NSCFArray objectForKey:]: unrecognized selector sent to instance 0x6d81720

注释掉后,我的字典日志:

(
        {
        "created_at" = "2012-04-04T01:46:51Z";
        description = "First Project Created";
        id = 1;
        name = "Test 1";
        "updated_at" = "2012-04-04T01:46:51Z";
    },
        {
        "created_at" = "2012-04-04T01:47:23Z";
        description = "Second Project Created";
        id = 2;
        name = "Test 2";
        "updated_at" = "2012-04-04T01:47:23Z";
    }
)

【问题讨论】:

  • 我读过其他类似的问题,我有 NSArray,我应该有 NSDictionary。进行此更改会给我完全相同的错误(显然是不同的实例 0x#######)。
  • 你的问题是......?

标签: ios json rest ios5


【解决方案1】:

您有一个字典数组,而不是数组字典。代替 objectForKey,使用 objectAtIndex 并分配给字典。这样做:

NSDictionary *projects = [[json objectAtIndex:0] objectForKey:@"name"];

【讨论】:

  • 谢谢!我不得不将 NSDictionary* json 更改为 NSArray,然后使用您上面的代码,它运行良好。谢谢。
猜你喜欢
  • 1970-01-01
  • 2021-08-08
  • 1970-01-01
  • 2015-10-28
  • 2017-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-14
相关资源
最近更新 更多