Skip to content Skip to sidebar Skip to footer

Android Json Gson Prom

i am trying to GSOn for parsing JSON. Here is my code: public class ProgramList { private List programs; public List getPrograms

Solution 1:

What is the problem in my code?

You're trying to deserialize to a Java data structure that does not match the JSON structure. More specifically, you're trying to deserialize to Java that is an object that contains a list from JSON that is a list.

object with list != list

Following is a working example using the same JSON as in the original question.

import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.lang.reflect.Type;
import java.net.URI;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

import com.google.gson.FieldNamingPolicy;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;

publicclassFoo
{
  publicstaticvoidmain(String[] args)throws Exception
  {
    Gsongson=newGsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create();
    TypeprogramsListType=newTypeToken<List<Program>>() {}.getType();
    Readerreader=newInputStreamReader(getJSONData("http://stage.sitv.com/api/v1/getScheduleByDate?date=2011-07-04"));
    List<Program> programs = gson.fromJson(reader, programsListType);
    System.out.println(gson.toJson(programs));
  }

  static InputStream getJSONData(String url)
  {
    DefaultHttpClienthttpClient=newDefaultHttpClient();
    URI uri;
    InputStreamdata=null;
    try
    {
      uri = newURI(url);
      HttpGetmethod=newHttpGet(uri);
      HttpResponseresponse= httpClient.execute(method);
      data = response.getEntity().getContent();
      InputStreammodData= data;
      //Log.i("MY INFO", "data: " + slurp(modData));
    }
    catch (Exception e)
    {
      e.printStackTrace();
    }

    return data;
  }
}

classProgram
{
  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;
}

Solution 2:

i suppose the ProgramList objs = gson.fromJson(ScheduleListingReader, ProgramList.class); expects Array, and you pass ScheduleListingReader. What type is ScheduleListingReader?

Check this out GSON

Post a Comment for "Android Json Gson Prom"