###実現したいこと
JSONICを使ってWeatherHacksのお天気WebサービスからJSONを取得して値を取り出したいのですがエラーが起きてしまいます。どうすればうまく動くでしょうか。何卒よろしくお願いいたします。
###発生している問題・エラーメッセージ
12日は、曇り時々晴れの見込みです。, publicTime=2016-08-11T10:44:00+0900}} は class sample.WeatherJson に変換できませんでした: $.forecasts at net.arnx.jsonic.JSON$Context.convertInternal(JSON.java:1775) at net.arnx.jsonic.JSON.parse(JSON.java:1155) at net.arnx.jsonic.JSON.parse(JSON.java:1130) at sample.Weather.main(Weather.java:63) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) Caused by: java.lang.UnsupportedOperationException: Cannot convert class java.util.ArrayList to class sample.Forecasts at net.arnx.jsonic.ObjectConverter.convert(Converter.java:1655) at net.arnx.jsonic.JSON.postparse(JSON.java:1310) at net.arnx.jsonic.JSON$Context.postparseInternal(JSON.java:1754) at net.arnx.jsonic.ObjectConverter.convert(Converter.java:1650) at net.arnx.jsonic.JSON.postparse(JSON.java:1310) at net.arnx.jsonic.JSON$Context.convertInternal(JSON.java:1762) ... 8 more
###コード
main
URL url = new URL("http://weather.livedoor.com/forecast/webservice/json/v1?city=130010"); System.err.println(url.toString()); HttpURLConnection urlconn = (HttpURLConnection) url.openConnection(); urlconn.setRequestMethod("GET"); urlconn.setInstanceFollowRedirects(false); urlconn.connect(); BufferedReader reader = new BufferedReader(new InputStreamReader(urlconn.getInputStream())); StringBuffer responseBuffer = new StringBuffer(); while (true) { String line = reader.readLine(); System.out.println(line); if (line == null) { break; } responseBuffer.append(line); } reader.close(); urlconn.disconnect(); String response = responseBuffer.toString(); WeatherJson weather = JSON.decode(response,WeatherJson.class);
WeatherJson.java
public class WeatherJson { private Location location; private String title; private String link; private String publicTime; private Description description; private Forecasts forecasts; private PinpointLocation pinpointLocation; private Copyright copyright; public void setLocation(Location location) { this.location = location; } public Location getLocation() { return location; } public void setTitle(String title) { this.title = title; } public String getTitle() { return title; } public void setLink(String link) { this.link = link; } public String getLink() { return link; } public void setPublicTime(String publicTime) { this.publicTime = publicTime; } public String getPublicTime() { return publicTime; } public void setDescription(Description description) { this.description = description; } public Description getDescription() { return description; } public void setForecasts(Forecasts forecasts) { this.forecasts = forecasts; } public Forecasts getForecasts() { return forecasts; } public void setPinpointLocation(PinpointLocation pinpointLocation) { this.pinpointLocation = pinpointLocation; } public PinpointLocation getPinpointLocation() { return pinpointLocation; } public void setCopyright(Copyright copyright) { this.copyright = copyright; } public Copyright getCopyright() { return copyright; } }
Location.java
public class Location { private String area; private String pref; private String city; public void setArea(String area) { this.area = area; } public String getArea() { return area; } public void setPref(String pref) { this.pref = pref; } public String getPref() { return pref; } public void setCity(String city) { this.city = city; } public String getCity() { return city; } }
Description.java
public class Description { private String text; private String publicTime; public void setText(String text) { this.text = text; } public String getText() { return text; } public void setPublicTime(String publicTime) { this.publicTime = publicTime; } public String getPublicTime() { return publicTime; } }
Forecasts.java
public class Forecasts { private String date; private String dateLabel; private String telop; private Image image; private Temperature temperature; public void setDate(String date) { this.date = date; } public String getDate() { return date; } public void setDateLabel(String dateLabel) { this.dateLabel = dateLabel; } public String getDateLabel() { return dateLabel; } public void setTelop(String telop) { this.telop = telop; } public String getTelop() { return telop; } public void setImage(Image image) { this.image = image; } public Image getImage() { return image; } public void setTemperature(Temperature temperature) { this.temperature = temperature; } public Temperature getTemperature() { return temperature; } }
Image.java
public class Image { private String title; private String link; private String url; private int width; private int height; public void setTitle(String title) { this.title = title; } public String getTitle() { return title; } public void setLink(String link) { this.link = link; } public String getLink() { return link; } public void setUrl(String url) { this.url = url; } public String getUrl() { return url; } public void setWidth(int width) { this.width = width; } public int getWidth() { return width; } public void setHeight(int height) { this.height = height; } public int getHeight() { return height; } }
Temperature.java
public class Temperature { private Min min; private Max max; public void setMin(Min min) { this.min = min; } public Min getMin() { return min; } public void setMax(Max max) { this.max = max; } public Max getMax() { return max; } }
PinpointLocation.java
public class PinpointLocation { private String name; private String link; public void setName(String name) { this.name = name; } public String getName() { return name; } public void setLink(String link) { this.link = link; } public String getLink() { return link; } }
Copyright.java
public class Copyright { private String title; private String link; private String image; private String provider; public void setTitle(String title) { this.title = title; } public String getTitle() { return title; } public void setLink(String link) { this.link = link; } public String getLink() { return link; } public void setImage(String image) { this.image = image; } public String getImage() { return image; } public void setProvider(String provider) { this.provider = provider; } public String getProvider() { return provider; } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/11 07:59
2016/08/11 08:01