JSONデータの解析
オブジェクトは、順序付けされない名前/値のペアのセットです。オブジェクトは、{(左の中括弧)で始まり、} (右の中括弧)で終わります。 各名前の後ろには、:(コロン)が付きます。そして、名前/値のペアは、,(コンマ)で区切られます。
JSON の紹介
{}:Dictionary
[]:Array
openWeatherMapのJSONデータからお天気をとる
openWeatherMap
{"coord":
{"lon": 139,
"lat": 35},
"sys":
{"message": 0.0296,
"country": "JP",
"sunrise": 1429732929,
"sunset": 1429780953},
"weather": [
{"id": 802,
"main": "Clouds",
"description": "scattered clouds",
"icon": "03d"}],
"base": "stations",
"main":
{"temp": 287.25,
"temp_min": 287.25,
"temp_max": 287.25,
"pressure": 1026.76,
"sea_level": 1034.8,
"grnd_level": 1026.76,
"humidity": 100},
"wind":
{"speed": 3.21,
"deg": 41.5002},
"clouds":
{"all": 36},
"dt": 1429749965,
"id": 1851632,
"name": "Shuzenji",
"cod": 200}
ここからtempだけ取り出す場合
hoge.m
-(NSString *)getWeatherTemp:(NSString *)lat lon:(NSString *)lon{
NSString *temp;
NSString *ApiPath = [NSString stringWithFormat:@"http://api.openweathermap.org/data/2.5/weather?lat=%@&lon=%@",lat,lon];
NSURL *url = [NSURL URLWithString:ApiPath];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
NSData *jsonData =[NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
if(jsonData){
NSError *jsonParsingError = nil;
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingAllowFragments error:&jsonParsingError];
NSArray *status = [dic objectForKey:@"main"];
NSNumber *mainWeather = [status valueForKey:@"temp"];
float code = [mainWeather floatValue];
code = code - 273.15;//ケルビン係数なので273.15を引く
temp = [NSString stringWithFormat:@"%.1f",code];
}
return temp;
}
weatherのmainだけ取り出す
NSArray *status = [dic objectForKey:@"weather"];
NSArray *mainWeather = [status valueForKey:@"main"];
NSString *string = mainWeather[0];
return string;