jimmyreddevil
jimmyreddevil

Reputation: 65

null pointer exception-parsing json with gson android

Hi i am trying to parse Json using gson library.My Json String is this

{
"data": [
    {
        "atb_atestwebservice_cities": [
            {
                "id": "3",
                "cities": "Ajmer",
                "date": "2012-03-01 19:30:32"
            }
        ]
    },
    {
        "atb_atestwebservice_states": [
            {
                "id": "2",
                "states": "goa",
                "date": "2012-02-28 12:53:51"
            }
        ]
    }
]

} With following classes

public class Cities {

@SerializedName("id")
private String id;

@SerializedName("cities")
private String cities;

@SerializedName("date")
private String date;

public Cities(String id,String city,String date)
{
    this.id=id;
    this.date=date;
    this.cities=city;

}
public String getId()
{
    return id;
}
public String getCity()
{
    return cities;
}
public String getDate()
{
    return date;
}

} and

public class States {
@SerializedName("id")
private String id;

@SerializedName("states")
private String states;

@SerializedName("date")
private String date;

 public States(String id,String states,String date)
{
    this.id=id;
    this.date=date;
    this.states=states;

}
public String getId()
{
    return id;
}
public String getCity()
{
    return states;
}
public String getDate()
{
    return date;
}

}

and a data class

public class Data {



 private List<Cities> atb_atestwebservice_cities;

 private List<States> atb_atestwebservice_states;

 public Data(List<Cities> cityList,List<States>stateList)
 {
     this.atb_atestwebservice_cities=cityList;
     this.atb_atestwebservice_states=stateList;
 }


 public List<Cities> getCityList()
 {
     return atb_atestwebservice_cities;
 }

 public void setCityList(List<Cities> cityList)
 {
     this.atb_atestwebservice_cities=cityList;
 }

 public List<States> getSateList()
 {
     return atb_atestwebservice_states;
 }

 public void setDatList(List<States> stateList)
 {
     this.atb_atestwebservice_states=stateList;
 }

} and code to deserialize the json string

Gson gson = new Gson();
Data data = gson.fromJson(jsonString,Data.class);

The problem is i am getting null pointer exception.i have referred this link for parsing.I am not sure what is the problem.Are my POJO classes proper or do i need to modify or add some more class ? EDIT:here is my log cat

  03-14 14:59:31.694: ERROR/AndroidRuntime(323): java.lang.NullPointerException
03-14 14:59:31.694: ERROR/AndroidRuntime(323):     at com.jimesh.ShowData$LongOperation.onPostExecute(ShowData.java:88)
03-14 14:59:31.694: ERROR/AndroidRuntime(323):     at com.jimesh.ShowData$LongOperation.onPostExecute(ShowData.java:1)
03-14 14:59:31.694: ERROR/AndroidRuntime(323):     at android.os.AsyncTask.finish(AsyncTask.java:417)
03-14 14:59:31.694: ERROR/AndroidRuntime(323):     at android.os.AsyncTask.access$300(AsyncTask.java:127)
03-14 14:59:31.694: ERROR/AndroidRuntime(323):     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429)
03-14 14:59:31.694: ERROR/AndroidRuntime(323):     at android.os.Handler.dispatchMessage(Handler.java:99)
03-14 14:59:31.694: ERROR/AndroidRuntime(323):     at android.os.Looper.loop(Looper.java:123)
03-14 14:59:31.694: ERROR/AndroidRuntime(323):     at android.app.ActivityThread.main(ActivityThread.java:4627)
03-14 14:59:31.694: ERROR/AndroidRuntime(323):     at java.lang.reflect.Method.invokeNative(Native Method)
03-14 14:59:31.694: ERROR/AndroidRuntime(323):     at java.lang.reflect.Method.invoke(Method.java:521)
03-14 14:59:31.694: ERROR/AndroidRuntime(323):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
03-14 14:59:31.694: ERROR/AndroidRuntime(323):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
03-14 14:59:31.694: ERROR/AndroidRuntime(323):     at dalvik.system.NativeStart.main(Native Method)

Upvotes: 1

Views: 3120

Answers (1)

Herry
Herry

Reputation: 7087

your Data.class is not properly write to get your json data parse in proper way .you need following structure for to get your all response.

you need to use following classes for get Result Data.

Gson gson = new Gson();
Data data = gson.fromJson(jsonString,Data.class);

Here is your Data class

 public class Data {

 @SerializedName("data")
 public List<ResultData> mResultData;
}

  public class ResultData {

    @SerializedName("atb_atestwebservice_cities")
    public List<City> mCityList;

    @SerializedName("atb_atestwebservice_states")
    public List<State> mStateList;

  }


public class City {

/*"id": "3",
"cities": "Ajmer",
"date": "2012-03-01 19:30:32"*/

    @SerializedName("id")
    public String id;

    @SerializedName("cities")
    public String mCitie;

    @SerializedName("date")
    public String mData;

}


  public class State {


/*"id": "2",
"states": "goa",
"date": "2012-02-28 12:53:51"*/

@SerializedName("id")
public String id;

@SerializedName("states")
public String mState;

@SerializedName("date")
public String mDate;

 }

All these class you need to add in your package.

Upvotes: 3

Related Questions