I'm trying to access an object that it is part of an HTTP JSON Response, this one. What I want is to access only the location
object from that response. If I access the full response from the developer console like this.
String url ='http://api.wunderground.com/api/48ba9f7756d42102/geolookup/conditions/forecast/q/Spain/Sevilla.json';
HttpRequest req = new HttpRequest();
req.setEndpoint(url);
req.setMethod('GET');
Http http = new Http();
HttpResponse res = http.send(req);
String responseBody = res.getBody();
system.debug('Weather response: ' + responseBody);
I get the full response exactly as the link above. That is fine.
Now I want to access only the location
JSON object by doing this:
I created one class for this purpose:
public with sharing class WeatherLocation { public location location{get;set;} public class Location { public String country_iso3166{get;set;} public String zip{get;set;} public String magic{get;set;} public String country{get;set;} public String wmo{get;set;} public String state_name{get;set;} public String latitude{get;set;} public String state{get;set;} public String longitude{get;set;} public String city{get;set;} public String elevation{get;set;} public String full{get;set;} } }
I execute a new anonymous code:
String url ='http://api.wunderground.com/api/48ba9f7756d42102/geolookup/conditions/forecast/q/Spain/Sevilla.json'; HttpRequest req = new HttpRequest(); req.setEndpoint(url); req.setMethod('GET'); Http http = new Http(); HttpResponse res = http.send(req); String responseBody = res.getBody(); WeatherLocation.location Wloc = (WeatherLocation.location)JSON.deserialize(responseBody, WeatherLocation.location.class); system.debug('WeatherLocation ' + Wloc);
The output that I'm getting:
20:21:59:367 USER_DEBUG [15]|DEBUG|Github user Location:[city=null, country=null, country_iso3166=null, elevation=null, full=null, latitude=null, longitude=null, magic=null, state=null, state_name=null, wmo=null, zip=null]
The response is sending back null
values for each of the fields I want to use. Anyone knows what it is that I'm missing here. This approach works fine with other JSON responses, do I need to call some other JSON object in order to get access to the location object? Any help will be much appreciated.
payload:
"location": {
"type": "INTLCITY",
"country": "SP",
"country_iso3166": "ES",
"country_name": "Spain",
"state": "SE",
"city": "Sevilla",
"tz_short": "CEST",
"tz_long": "Europe/Madrid",
"lat": "37.38000107",
"lon": "-5.98000002",
"zip": "00000",
"magic": "2",
"wmo": "WLEEC",
"l": "/q/zmw:00000.2.WLEEC",
"requesturl": "global/stations/WLEEC.html",
"wuiurl": "https://www.wunderground.com/global/stations/WLEEC.html",
"nearby_weather_stations": {
"airport": {
"station": [
{
"city": "",
"state": "",
"country": "",
"icao": "",
"lat": "",
"lon": ""
},
{
"city": "Sevilla El Copero",
"state": "",
"country": "SP",
"icao": "LEEC",
"lat": "37.31000137",
"lon": "-6.00000000"
},
{
"city": "Sevilla",
"state": "",
"country": "ES",
"icao": "LEZL",
"lat": "37.41999817",
"lon": "-5.90000010"
},
{
"city": "Moron de la Frontera",
"state": "",
"country": "SP",
"icao": "LEMO",
"lat": "37.15000153",
"lon": "-5.61999989"
}
]
},
"pws": {
"station": [
{
"neighborhood": "Sea cliff",
"city": "Seville",
"state": "",
"country": "ES",
"id": "ISEVILLE12",
"lat": 37.382401,
"lon": -5.9761,
"distance_km": 0,
"distance_mi": 0
},
{
"neighborhood": "Calle General García de la Herranz",
"city": "Sevilla",
"state": "",
"country": "ES",
"id": "ISEVILLA40",
"lat": 37.374828,
"lon": -5.975199,
"distance_km": 0,
"distance_mi": 0
},
{
"neighborhood": "Luis de Montoto",
"city": "Sevilla",
"state": "",
"country": "ES",
"id": "ISEVILLA36",
"lat": 37.389091,
"lon": -5.984459,
"distance_km": 1,
"distance_mi": 0
},
{
"neighborhood": "Calle Guzmán el Bueno",
"city": "Sevilla",
"state": "",
"country": "ES",
"id": "ISEVILLA61",
"lat": 37.387226,
"lon": -5.990362,
"distance_km": 1,
"distance_mi": 0
},
{
"neighborhood": "Calle Velarde",
"city": "Sevilla",
"state": "",
"country": "ES",
"id": "ISEVILLA31",
"lat": 37.384609,
"lon": -5.997752,
"distance_km": 1,
"distance_mi": 0
},
{
"neighborhood": "Calle Sebastián Trujillo",
"city": "Sevilla",
"state": "",
"country": "ES",
"id": "ISEVILLA47",
"lat": 37.382309,
"lon": -5.960624,
"distance_km": 1,
"distance_mi": 1
},
{
"neighborhood": "Calle Virgen del Monte",
"city": "Sevilla",
"state": "",
"country": "SP",
"id": "ISEVILLA44",
"lat": 37.377792,
"lon": -6.000916,
"distance_km": 1,
"distance_mi": 1
},
{
"neighborhood": "Calle Virgen de la Cinta",
"city": "Sevilla",
"state": "",
"country": "ES",
"id": "ISEVILLA34",
"lat": 37.372639,
"lon": -5.99912,
"distance_km": 1,
"distance_mi": 1
},
{
"neighborhood": "Avenida de la Reina Mercedes",
"city": "Sevilla",
"state": "",
"country": "ES",
"id": "ISEVILLA71",
"lat": 37.362957,
"lon": -5.986244,
"distance_km": 1,
"distance_mi": 1
},
{
"neighborhood": "Carretera de Carmona",
"city": "Sevilla",
"state": "",
"country": "ES",
"id": "ISEVILLA67",
"lat": 37.397945,
"lon": -5.980408,
"distance_km": 1,
"distance_mi": 1
},
{
"neighborhood": "Avenida Ramón de Carranza",
"city": "Sevilla",
"state": "",
"country": "SP",
"id": "ISEVILLA30",
"lat": 37.371792,
"lon": -6.002954,
"distance_km": 2,
"distance_mi": 1
},
{
"neighborhood": "Calle Evangelista",
"city": "Sevilla",
"state": "",
"country": "ES",
"id": "ISEVILLA75",
"lat": 37.379345,
"lon": -6.007031,
"distance_km": 2,
"distance_mi": 1
},
{
"neighborhood": "Calle San Vicente",
"city": "Sevilla",
"state": "",
"country": "ES",
"id": "ISEVILLA57",
"lat": 37.396194,
"lon": -5.999093,
"distance_km": 2,
"distance_mi": 1
},
{
"neighborhood": "Sevilla - Triana",
"city": "Sevilla",
"state": "SEVILLA",
"country": "ES",
"id": "ISEVILLA13",
"lat": 37.380402,
"lon": -6.010914,
"distance_km": 2,
"distance_mi": 1
},
{
"neighborhood": "Calle Aracena",
"city": "Sevilla",
"state": "",
"country": "ES",
"id": "ISEVILLA77",
"lat": 37.384449,
"lon": -6.010558,
"distance_km": 2,
"distance_mi": 1
},
{
"neighborhood": "Feria",
"city": "Sevilla",
"state": "",
"country": "ES",
"id": "ISEVILLA51",
"lat": 37.40292,
"lon": -5.99197,
"distance_km": 2,
"distance_mi": 1
},
{
"neighborhood": "Sevilla - Ronda de los Tejares",
"city": "Sevilla",
"state": "ANDALUCíA",
"country": "ES",
"id": "IANDALUC83",
"lat": 37.380451,
"lon": -6.013572,
"distance_km": 2,
"distance_mi": 1
},
{
"neighborhood": "Calle Estrasburgo",
"city": "Sevilla",
"state": "",
"country": "ES",
"id": "ISEVILLA29",
"lat": 37.348221,
"lon": -5.979222,
"distance_km": 3,
"distance_mi": 2
},
{
"neighborhood": "Calle Cantina",
"city": "Seville",
"state": "",
"country": "ES",
"id": "ISEVILLE3",
"lat": 37.419109,
"lon": -5.98512,
"distance_km": 4,
"distance_mi": 2
},
{
"neighborhood": "www.meteosanjuan.com",
"city": "San Juan De Aznalfarache",
"state": "SEVILLA",
"country": "ES",
"id": "ISEVILLA21",
"lat": 37.360889,
"lon": -6.030504,
"distance_km": 4,
"distance_mi": 2
},
{
"neighborhood": "Calle Vicente Aleixandre",
"city": "Tomares",
"state": "",
"country": "ES",
"id": "ITOMARES5",
"lat": 37.370872,
"lon": -6.03558,
"distance_km": 5,
"distance_mi": 3
},
{
"neighborhood": "Calle Profesor Tierno Galván",
"city": "Tomares",
"state": "",
"country": "ES",
"id": "ITOMARES7",
"lat": 37.383041,
"lon": -6.038856,
"distance_km": 5,
"distance_mi": 3
},
{
"neighborhood": "Calle Ulises",
"city": "Sevilla",
"state": "",
"country": "ES",
"id": "ISEVILLA59",
"lat": 37.396545,
"lon": -5.923732,
"distance_km": 5,
"distance_mi": 3
},
{
"neighborhood": "Sevilla - Hacienda San Antonio",
"city": "Sevilla",
"state": "Andalucía",
"country": "ES",
"id": "IALSEVIL3",
"lat": 37.379246,
"lon": -5.917678,
"distance_km": 5,
"distance_mi": 3
},
{
"neighborhood": "San Juan de Aznalfarache",
"city": "San Juan De Aznalfarache",
"state": "SE",
"country": "SP",
"id": "ISESANJU3",
"lat": 37.350018,
"lon": -6.029826,
"distance_km": 5,
"distance_mi": 3
},
{
"neighborhood": "Parque Alcosa",
"city": "Sevilla",
"state": "ANDALUC�A",
"country": "ES",
"id": "IANDALUC53",
"lat": 37.407822,
"lon": -5.926668,
"distance_km": 5,
"distance_mi": 3
},
{
"neighborhood": "San Juan de Aznalfarache",
"city": "San Juan De Aznalfarache",
"state": "SE",
"country": "SP",
"id": "ISESANJU4",
"lat": 37.356781,
"lon": -6.037522,
"distance_km": 5,
"distance_mi": 3
},
{
"neighborhood": "Calle Virgen de los Dolores",
"city": "Tomares",
"state": "",
"country": "ES",
"id": "ITOMARES2",
"lat": 37.375854,
"lon": -6.045006,
"distance_km": 5,
"distance_mi": 3
},
{
"neighborhood": "Tomares - Aljamar",
"city": "Tomares",
"state": "",
"country": "ES",
"id": "ITOMARES8",
"lat": 37.373432,
"lon": -6.044942,
"distance_km": 5,
"distance_mi": 3
},
{
"neighborhood": "La Cartuja",
"city": "Tomares",
"state": "ANDALUCíA",
"country": "ES",
"id": "IANDALUC181",
"lat": 37.365551,
"lon": -6.045215,
"distance_km": 5,
"distance_mi": 3
}
]
}
}
}
WheatherLocation
instance, notWheatherLocation.Location
?WheaterLocation
rather thanWheaterLocation.Location
is giving a response back for those fields.