Я пытаюсь GSOn для анализа JSON. Вот мой код:
public class ProgramList {
private List<Program> programs;
public List<Program> getPrograms() {
return programs;
}
public void setPrograms(List<Program> programs) {
this.programs = programs;
}
}
public class Program {
private String id;
private String startTime;
private String endTime;
private String showDate;
private String title;
private String episodeTitle;
private String description;
private String duration;
private String showLink;
private String genre;
private String archived;
public String getID() {
return id;
}
public void setID(String ID) {
this.id = ID;
}
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
this.startTime = startTime;
}
public String getEndTime() {
return endTime;
}
public void setEndTime(String endTime) {
this.endTime = endTime;
}
public String getShowDate() {
return showDate;
}
public void setShowDate(String showDate) {
this.showDate = showDate;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getEpisodeTitle() {
return episodeTitle;
}
public void setEpisodeTitle(String episodeTitle) {
this.episodeTitle = episodeTitle;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getDuration() {
return duration;
}
public void setDuration(String duration) {
this.duration = duration;
}
public String getShowLink() {
return showLink;
}
public void setShowLink(String showLink) {
this.showLink = showLink;
}
public String getGenre() {
return genre;
}
public void setGenre(String genre) {
this.genre = genre;
}
public String getArchived() {
return archived;
}
public void setArchived(String archived) {
this.archived = archived;
}
}
InputStream getJSONData(String url){
DefaultHttpClient httpClient = new DefaultHttpClient();
URI uri;
InputStream data = null;
try {
uri = new URI(url);
HttpGet method = new HttpGet(uri);
HttpResponse response = httpClient.execute(method);
data = response.getEntity().getContent();
InputStream modData = data;
//Log.i("MY INFO", "data: " + slurp(modData));
} catch (Exception e) {
e.printStackTrace();
}
return data;
}
public class ScheduleActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Reader ScheduleListingReader = new InputStreamReader(getJSONData("http://stage.sitv.com/api/v1/getScheduleByDate?date=2011-07-04"));
Gson gson = new Gson();
ProgramList objs = gson.fromJson(ScheduleListingReader, ProgramList.class);
}
}
Теперь, когда я запускаю приложение, я получаю следующую ошибку:
07-11 19:00:34.871: WARN/System.err(4519): com.google.gson.JsonParseException: Expecting array but found object: com.nuvotv.model.ProgramList@4597d758
07-11 19:00:34.871: WARN/System.err(4519): at com.google.gson.JsonArrayDeserializationVisitor.startVisitingObject(JsonArrayDeserializationVisitor.java:89)
07-11 19:00:34.871: WARN/System.err(4519): at com.google.gson.ObjectNavigator.accept(ObjectNavigator.java:119)
07-11 19:00:34.871: WARN/System.err(4519): at com.google.gson.JsonDeserializationContextDefault.fromJsonArray(JsonDeserializationContextDefault.java:67)
07-11 19:00:34.871: WARN/System.err(4519): at com.google.gson.JsonDeserializationContextDefault.deserialize(JsonDeserializationContextDefault.java:52)
07-11 19:00:34.871: WARN/System.err(4519): at com.google.gson.Gson.fromJson(Gson.java:551)
07-11 19:00:34.871: WARN/System.err(4519): at com.google.gson.Gson.fromJson(Gson.java:498)
07-11 19:00:34.871: WARN/System.err(4519): at com.google.gson.Gson.fromJson(Gson.java:441)
07-11 19:00:34.871: WARN/System.err(4519): at com.nuvotv.main.ScheduleListingActivity.onCreate(ScheduleActivity.java:28)
07-11 19:00:34.871: WARN/System.err(4519): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
07-11 19:00:34.871: WARN/System.err(4519): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
07-11 19:00:34.881: WARN/System.err(4519): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2519)
07-11 19:00:34.881: WARN/System.err(4519): at android.app.ActivityThread.access$2200(ActivityThread.java:123)
07-11 19:00:34.881: WARN/System.err(4519): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1870)
07-11 19:00:34.881: WARN/System.err(4519): at android.os.Handler.dispatchMessage(Handler.java:99)
07-11 19:00:34.881: WARN/System.err(4519): at android.os.Looper.loop(Looper.java:123)
07-11 19:00:34.881: WARN/System.err(4519): at android.app.ActivityThread.main(ActivityThread.java:4370)
07-11 19:00:34.881: WARN/System.err(4519): at java.lang.reflect.Method.invokeNative(Native Method)
В чем проблема в моем коде?