-1

iOS アプリケーションで JSON フィードをダウンロードして解析しています。JSON フィードが提供するデータの一部は、iOS アプリケーションで正しく表示されますが、JSON フィードの一部は、実際の JSON フィード自体には「null」データが含まれていなくても、「null」を返すようです。

これが私のコードです:

NSError *myError = nil;
NSDictionary *res = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableLeaves  error:&myError];
NSArray *results = [res objectForKey:@"current_observation"];
NSArray *cur = [results valueForKey:@"weather"];
NSArray *loc = [results valueForKey:@"full"];
NSArray *tmp = [results valueForKey:tmptype];

読み込もうとしている JSON フィードは次のとおりです: http://api.wunderground.com/api/595007cb79ada1b1/conditions/q/CA/San_Francisco.json

「null」を返す JSON フィードの一部は次のとおりです。

"full":"San Francisco, CA"

上記は「null」を返します....なぜですか?そして、どうすればこの問題を解決できますか?

ありがとう、ダン

4

3 に答える 3

1

最初の結果はタイプではありませんNSArray

キーの値を取得しようとしている場合:full正しいパスにいません。あなたは入ってcurrent_observation.fullいますが、欲しい鍵は入っていますcurrent_observation.display_location.full。JSON はネストされているため、正しいパスに移動する必要があります。

一度に完全なパスを取得できます。

NSError *myError = nil;
NSDictionary *res = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableLeaves error:&myError];
NSString *weather = [res valueForKeyPath:@"current_observation.weather"];
NSString *cur = [res valueForKeyPath:@"current_observation.display_location.full"];
于 2013-05-14T13:43:23.917 に答える
0
NSError *myError = nil;
NSDictionary *res = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableLeaves  error:&myError];
NSArray *results = [res objectForKey:@"current_observation"];
NSArray *cur = [results valueForKey:@"weather"];
NSString *full= [[res valueForKey:@"display_location"] valueForKey:@"full"]];
NSArray *tmp = [results valueForKey:tmptype];

これを試してみてください。

于 2013-05-14T13:57:28.047 に答える