设置为对象时,JSON结果为空,但结果可以打印出来

时间:2013-01-23 23:08:18

标签: ios json

我是JSON和Web服务的新手,所以请耐心等待。我从Web服务器回复了一个响应。在PostMan中,它看起来像:

{
    "Response": {
        "TranscriptSource": "MD",
        "Result": [
            {
                "Variant": {
                    "Chromosome": "chr1",
                    "Position": 13302,
                    "ReferenceAllele": "C",
                    "VariantAlleles": "T"
                }
            }
        ],
        "JobId": 0
    }
}

如果在我的connectionDidFinishLoading方法中,我这样做:

NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:self.receivedData options:kNilOptions error:&error];
[dict enumerateKeysAndObjectsUsingBlock:^(id obj, id key, BOOL *stop) {
    NSLog(@"key: %@ obj: %@\n", [key description], [obj description]);
}];

我得到相同的输出。基本上我想要“Variant”字段中的内容。所以我想我会先做

id result = [dict objectForKey@"Result"];

当我单步执行调试器时,结果为nil。我不知道为什么我可以打印出来。

最后我的主要问题是,如何访问响应的Variant部分,但是如果你知道为什么id result将是nil,那也很酷。谢谢!

1 个答案:

答案 0 :(得分:3)

您的顶级项目是具有单个键的对象“响应”。看起来你想要:

id result = [[dict objectForKey:@"Response"] objectForKey:@"Result"];