I was trying to parse a JSON file with JsonReader
. I use the skipvalue()
function to go to the next key, but instead of going to the next key, the parser jumps to the end of file.
The file looks like this:
{
"data":{
"current_condition":[
{
"cloudcover":"100",
"humidity":"74",
"observation_time":"01:28 PM",
"precipMM":"0.4",
"pressure":"1005",
"temp_C":"-3",
"temp_F":"27",
"visibility":"6",
"weatherCode":"326",
"weatherDesc":[
{
"value":"Light snow"
}
],
"weatherIconUrl":[
{
"value":"http:\/\/www.worldweatheronline.com\/images\/wsymbols01_png_64\/wsymbol_0011_light_snow_showers.png"
}
],
"winddir16Point":"NE",
"winddirDegree":"50",
"windspeedKmph":"15",
"windspeedMiles":"9"
}
],
"request":[
{
"query":"Minsk, Belarus",
"type":"City"
}
],
"weather":[
{
"date":"2013-03-20",
"precipMM":"4.4",
"tempMaxC":"-4",
"tempMaxF":"25",
"tempMinC":"-13",
"tempMinF":"10",
"weatherCode":"326",
"weatherDesc":[
{
"value":"Light snow"
}
],
"weatherIconUrl":[
{
"value":"http:\/\/www.worldweatheronline.com\/images\/wsymbols01_png_64\/wsymbol_0011_light_snow_showers.png"
}
],
"winddir16Point":"NE",
"winddirDegree":"40",
"winddirection":"NE",
"windspeedKmph":"17",
"windspeedMiles":"11"
},
{
"date":"2013-03-21",
"precipMM":"0.6",
"tempMaxC":"-5",
"tempMaxF":"23",
"tempMinC":"-15",
"tempMinF":"5",
"weatherCode":"326",
"weatherDesc":[
{
"value":"Light snow"
}
],
"weatherIconUrl":[
{
"value":"http:\/\/www.worldweatheronline.com\/images\/wsymbols01_png_64\/wsymbol_0011_light_snow_showers.png"
}
],
"winddir16Point":"NE",
"winddirDegree":"38",
"winddirection":"NE",
"windspeedKmph":"12",
"windspeedMiles":"7"
},
{
"date":"2013-03-22",
"precipMM":"0.1",
"tempMaxC":"-9",
"tempMaxF":"17",
"tempMinC":"-19",
"tempMinF":"-2",
"weatherCode":"119",
"weatherDesc":[
{
"value":"Cloudy"
}
],
"weatherIconUrl":[
{
"value":"http:\/\/www.worldweatheronline.com\/images\/wsymbols01_png_64\/wsymbol_0003_white_cloud.png"
}
],
"winddir16Point":"NE",
"winddirDegree":"51",
"winddirection":"NE",
"windspeedKmph":"19",
"windspeedMiles":"12"
},
{
"date":"2013-03-23",
"precipMM":"0.0",
"tempMaxC":"-8",
"tempMaxF":"18",
"tempMinC":"-13",
"tempMinF":"8",
"weatherCode":"116",
"weatherDesc":[
{
"value":"Partly Cloudy"
}
],
"weatherIconUrl":[
{
"value":"http:\/\/www.worldweatheronline.com\/images\/wsymbols01_png_64\/wsymbol_0002_sunny_intervals.png"
}
],
"winddir16Point":"NNE",
"winddirDegree":"12",
"winddirection":"NNE",
"windspeedKmph":"16",
"windspeedMiles":"10"
}
]
}
}
This is my code:
String json_url = "http://free.worldweatheronline.com/feed/weather.ashx?q="+city+"&format=json&num_of_days="+Integer.toString(days)+"&key=0592d3cc1b151105131103";
JsonReader forecastJsonReader = new JsonReader(new InputStreamReader(getUrlData(json_url)));
forecastJsonReader.beginArray();
while (forecastJsonReader.hasNext()) {
String name = forecastJsonReader.nextName();
if (name.equals("date")) {
Log.d("WEATHER",forecastJsonReader.nextString());
} else if(name.equals("tempMaxC")) {
Log.d("WEATHER",forecastJsonReader.nextString());
} else {
forecastJsonReader.skipValue();
}
}
forecastJsonReader.endObject();
forecastJsonReader.close();