Reputation: 791
I have been following Mike Brind's guide to using JSON in web pages razor.
The only difference being, that his example uses a "foreach" loop, but my JSON return only returns single value parameters. The code below doesn't error out, but it's not returning the value on screen.
@{
var client = new WebClient();
var json = client.DownloadString("http://api.wunderground.com/api/xxxxxxxx/conditions/q/FL/Orlando.json");
var search = Json.Decode(json);
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<h2>The current temperature is </h2>
<h3>@search.temp_f</h3>
</body>
</html>
And here's the JSON response:
{
"response": {
"version": "0.1",
"termsofService": "http://www.wunderground.com/weather/api/d/terms.html",
"features": {
"conditions": 1
}
},
"current_observation": {
"image": {
"url":"http://icons-ak.wxug.com/graphics/wu2/logo_130x80.png",
"title":"Weather Underground",
"link":"http://www.wunderground.com"
},
"display_location": {
"full":"Orlando, FL",
"city":"Orlando",
"state":"FL",
"state_name":"Florida",
"country":"US",
"country_iso3166":"US",
"zip":"32801",
"latitude":"28.54150772",
"longitude":"-81.37413788",
"elevation":"35.00000000"
},
"observation_location": {
"full":"WFTV, Channel 9, Orlando, Florida",
"city":"WFTV, Channel 9, Orlando",
"state":"Florida",
"country":"US",
"country_iso3166":"US",
"latitude":"28.537670",
"longitude":"-81.372108",
"elevation":"92 ft"
},
"estimated": {
},
"station_id":"KFLORLAN65",
"observation_time":"Last Updated on June 25, 2:02 PM EDT",
"observation_time_rfc822":"Tue, 25 Jun 2013 14:02:02 -0400",
"observation_epoch":"1372183322",
"local_time_rfc822":"Tue, 25 Jun 2013 14:07:54 -0400",
"local_epoch":"1372183674",
"local_tz_short":"EDT",
"local_tz_long":"America/New_York",
"local_tz_offset":"-0400",
"weather":"Light Rain",
"temperature_string":"88.7 F (31.5 C)",
"temp_f":88.7,
"temp_c":31.5,
"relative_humidity":"64%",
"wind_string":"From the East at 7.0 MPH",
"wind_dir":"East",
"wind_degrees":101,
"wind_mph":7.0,
"wind_gust_mph":0,
"wind_kph":11.3,
"wind_gust_kph":0,
"pressure_mb":"1021",
"pressure_in":"30.14",
"pressure_trend":"-",
"dewpoint_string":"75 F (24 C)",
"dewpoint_f":75,
"dewpoint_c":24,
"heat_index_string":"99 F (37 C)",
"heat_index_f":99,
"heat_index_c":37,
"windchill_string":"NA",
"windchill_f":"NA",
"windchill_c":"NA",
"feelslike_string":"99 F (31.5 C)",
"feelslike_f":"99",
"feelslike_c":"31.5",
"visibility_mi":"10.0",
"visibility_km":"16.1",
"solarradiation":"",
"UV":"8",
"precip_1hr_string":"-999.00 in ( 0 mm)",
"precip_1hr_in":"-999.00",
"precip_1hr_metric":" 0",
"precip_today_string":"0.00 in (0 mm)",
"precip_today_in":"0.00",
"precip_today_metric":"0",
"icon":"rain",
"icon_url":"http://icons-ak.wxug.com/i/c/k/rain.gif",
"forecast_url":"http://www.wunderground.com/US/FL/Orlando.html",
"history_url":"http://www.wunderground.com/weatherstation/WXDailyHistory.asp?ID=KFLORLAN65",
"ob_url":"http://www.wunderground.com/cgi-bin/findweather/getForecast?query=28.537670,-81.372108"
}
}
Upvotes: 1
Views: 1268
Reputation: 129697
You are looking for the value in the wrong place. temp_f
is not part of the outer object; it is part of the current_observation
object.
Change this line:
<h3>@search.temp_f</h3>
to this:
<h3>@search.current_observation.temp_f</h3>
Upvotes: 1