Разбор исключений нулевого указателя JSON с Android Android - PullRequest
1 голос
/ 14 марта 2012

Привет, я пытаюсь разобрать Json с помощью библиотеки gson. Мой Json String это

{
"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"
            }
        ]
    }
]

} со следующими классами

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

} и

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

}

и класс данных

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

} и код для десериализации строки json

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

Проблема в том, что я получаю исключение нулевого указателя. IЯ сослался на эту ссылку для анализа. Я не уверен, в чем проблема. Правильны ли мои классы POJO или мне нужно изменить или добавить еще какой-нибудь класс?РЕДАКТИРОВАТЬ: вот мой журнал кошка

  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)

1 Ответ

3 голосов
/ 14 марта 2012

Ваш класс Data.class не записан должным образом для правильного анализа данных json. Вам нужна следующая структура, чтобы получить полный ответ.

вам нужно использовать следующие классы для получения данных результата.

Gson gson = new Gson();
Data data = gson.fromJson(jsonString,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;

 }

Все эти классы вам нужно добавить в свой пакет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...