で JSON ファイルを解析しようとしていましたJsonReader
。関数を使用skipvalue()
して次のキーに移動しますが、パーサーは次のキーに移動する代わりに、ファイルの最後にジャンプします。
ファイルは次のようになります。
{
"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"
}
]
}
}
これは私のコードです:
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();