0

JSON フィードをダウンロードして解析するように iOS アプリをセットアップしました。データは正常にフェッチされますが、フィードの特定のネストされた JSON データを読み取る方法に苦労しています。

読み込もうとしている JSON フィードは次のとおりです。

読み込もうとしている JSON フィードの部分は次のとおりです。

"forecast":{
    "txt_forecast": {
    "date":"1:00 AM BST",
    "forecastday": [
    {
    "period":0,
    "icon":"chancerain",
    "icon_url":"http://icons-ak.wxug.com/i/c/k/chancerain.gif",
    "title":"Thursday",
    "fcttext":"Clear with a chance of rain in the morning, then mostly cloudy with a chance of rain. High of 59F. Winds from the SSE at 5 to 10 mph. Chance of rain 60%.",
    "fcttext_metric":"Clear with a chance of rain in the morning, then mostly cloudy with a chance of rain. High of 15C. Winds from the SSE at 5 to 15 km/h. Chance of rain 60%.",
    "pop":"60"
    }

「ピリオド」:0 と呼ばれるビットがあり、ピリオド 0 には「アイコン」、「タイトル」などがあります...

そのデータにアクセスしようとしていますが、アクセスできません。

ネストされた JSON フィードの特定の部分にアクセスするためのコードを次に示します。

NSError *myError = nil;
NSDictionary *res = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableLeaves  error:&myError];
NSArray *results = [res objectForKey:@"current_observation"];
NSArray *cur = [results valueForKey:@"weather"];
NSArray *windrep = [results valueForKey:@"wind_string"];
NSArray *UVrep = [results valueForKey:@"UV"];
NSArray *othertemprep = [results valueForKey:@"temperature_string"];
NSString *loc = [[results valueForKey:@"display_location"] valueForKey:@"city"];
NSString *countcode = [[results valueForKey:@"display_location"] valueForKey:@"country"];

それを変更して、必要なものにアクセスするにはどうすればよいですか?

これが私の他の試みです:

 NSString *test = [[[results valueForKey:@"forecast"] valueForKey:@"period:0"] valueForKey:@"title"];

助けてくれてありがとう、ダン。

4

1 に答える 1

1

period配列に含まれる最初のディクショナリのキーでforecastday、値は 0 です。ディクショナリを特定するものではありません。

の最初の要素でタイトル値を取得するにはforecastday、コードは次のようになります。

NSString *title = results[@"forecast"][0][@"title"];

または、新しい添字構文を使用していない場合:

NSString *title = 
  [[[results objectForKey:@"forecast"] objectAtIndex:0] objectForKey:@"title"];
于 2013-05-16T14:54:12.200 に答える