0

私は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]);
}];

同じ出力が得られます。基本的に、私はその「バリアント」フィールドにあるものが欲しいです。だから私は最初にやろうと思った

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

デバッガーをステップスルーすると、結果はnilになります。印刷できるので理由がわかりませんでした。

最後に、私の主な質問は、応答のVariant部分にアクセスするにはどうすればよいかということですが、なぜid resultnilになるかがわかっている場合は、それもすばらしいでしょう。ありがとう!

4

1 に答える 1

3

トップレベルのアイテムは、「Response」という単一のキーを持つオブジェクトです。あなたが望むように見えます:

id result = [[dict objectForKey:@"Response"] objectForKey:@"Result"];
于 2013-01-23T23:10:55.633 に答える