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

Ios 设置为对象时,JSON结果为空,但结果可以打印出来,ios,json,Ios,Json,我不熟悉JSON和web服务,所以请耐心听我说。我正在从web服务器返回响应。在《邮递员》中,它看起来像: { "Response": { "TranscriptSource": "MD", "Result": [ { "Variant": { "Chromosome": "chr1", "Position": 13302

我不熟悉JSON和web服务,所以请耐心听我说。我正在从web服务器返回响应。在《邮递员》中,它看起来像:

{
    "Response": {
        "TranscriptSource": "MD",
        "Result": [
            {
                "Variant": {
                    "Chromosome": "chr1",
                    "Position": 13302,
                    "ReferenceAllele": "C",
                    "VariantAlleles": "T"
                }
            }
        ],
        "JobId": 0
    }
}
如果在我的ConnectiondFinishLoading方法中,我执行以下操作:

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]);
}];
我得到相同的输出。基本上我想要的是“变体”字段中的内容。所以我想我应该从做

id result = [dict objectForKey@"Result"];
当我单步执行调试器时,结果是nil。我不知道为什么,因为我可以打印出来


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

您的顶级项是一个带有单个键“Response”的对象。看起来您想要:

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

您的顶级项是一个具有单个键“Response”的对象。看起来您想要:

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

要进入
Variant
字段,您需要深入到包含它的数组中,以便在上面进行扩展,第一个
Variant
条目将位于
[[[dict objectForKey:@“Response”]objectForKey:@“Result”]objectAtIndex:0]objectForKey:@“Variant”]
要进入
Variant
字段,您需要深入到包含它的数组中,以便在上面进行扩展,第一个
Variant
条目将位于
[[[dict objectForKey:@“Response”]objectForKey:@“Result”]objectAtIndex:0]objectForKey:@“Variant”]