2016-02-06 2 views
0

Я использую gson с модификацией для разбора json-ответа, но я получаю вышеупомянутое упоминание об исключении. Я попытался найти в сети и выяснить это сам, но не получил никакого успеха до сих порGson throwing EXPECTED_ARRAY но найдено String Exception

Вот мой JSON ответ:

{ 
    "success": "true", 
    "message": "", 
    "data": [{ 
     "Id": "56B5D1408B8D9", 
     "Name": "John", 
     "Age":"28", 
     "place": "Central City" 
    }] 
} 

my Pojo Class 

public class Datum { 

@SerializedName("Id") 
@Expose 
private String Id; 
@SerializedName("Name") 
@Expose 
private String Name; 
@SerializedName("Age") 
@Expose 
private String Age; 
@SerializedName("place") 
@Expose 
private String place; 

/** 
* 
* @return 
* The Id 
*/ 
public String getId() { 
return Id; 
} 

/** 
* 
* @param Id 
* The Id 
*/ 
public void setId(String Id) { 
this.Id = Id; 
} 

/** 
* 
* @return 
* The Name 
*/ 
public String getName() { 
return Name; 
} 

/** 
* 
* @param Name 
* The Name 
*/ 
public void setName(String Name) { 
this.Name = Name; 
} 

/** 
* 
* @return 
* The Age 
*/ 
public String getAge() { 
return Age; 
} 

/** 
* 
* @param Age 
* The Age 
*/ 
public void setAge(String Age) { 
this.Age = Age; 
} 

/** 
* 
* @return 
* The place 
*/ 
public String getPlace() { 
return place; 
} 

/** 
* 
* @param place 
* The place 
*/ 
public void setPlace(String place) { 
this.place = place; 
} 

} 

Родитель класса пакет com.example;

import java.util.ArrayList; 
import java.util.List; 
import javax.annotation.Generated; 
import com.google.gson.annotations.Expose; 
import com.google.gson.annotations.SerializedName; 

@Generated("org.jsonschema2pojo") 
public class UserModel { 

@SerializedName("success") 
@Expose 
private String success; 
@SerializedName("message") 
@Expose 
private String message; 
@SerializedName("data") 
@Expose 
private List<Datum> data = new ArrayList<Datum>(); 

/** 
* 
* @return 
* The success 
*/ 
public String getSuccess() { 
return success; 
} 

/** 
* 
* @param success 
* The success 
*/ 
public void setSuccess(String success) { 
this.success = success; 
} 

/** 
* 
* @return 
* The message 
*/ 
public String getMessage() { 
return message; 
} 

/** 
* 
* @param message 
* The message 
*/ 
public void setMessage(String message) { 
this.message = message; 
} 

/** 
* 
* @return 
* The data 
*/ 
public List<Datum> getData() { 
return data; 
} 

/** 
* 
* @param data 
* The data 
*/ 
public void setData(List<Datum> data) { 
this.data = data; 
} 

} 

Вот мой код, чтобы разобрать его

частной пустота getUserDetail() {

Call<UserModel> userModelCall = Util.getEndPointService().fetchUser(sessionId, startNo); 
    userModelCall.enqueue(new Callback<UserModel>() { 
     @Override 
     public void onResponse(Response<UserModel> response) { 
      int resCode = response.code(); 
      Log.i(TAG_DEBUG, "response code is " + resCode); 
      if (resCode == 200) { 
       UserModel userModel = response.body(); 
       Log.i(TAG_DEBUG, userModel.getSuccess()); 

       if (userModel.getSuccess().equals(StringConstants.TRUE)) { 
        retrieveDownloadedProfile(userModel); 
       } 
      } 
     } 

     @Override 
     public void onFailure(Throwable t) { 
      CLog.e(TAG_DEBUG, "Exception in getUserDetail " + t); 
      t.printStackTrace(); 
     } 
    }); 

} 
+2

Пожалуйста, покажите, где вы разбираете JSON? Некоторый код поможет .. –

+0

Я отредактировал мой вопрос. –

ответ

0

Gson начнет работать с корня, вы будете нуждаться в родителе, который соответствует вашей реакции, как :

class MyResponse { 
    public List<Datum> data; 
} 

Ваш класс Datum выглядит, как он соответствует элементы внутри data массив в ответе

+0

У меня уже есть класс Example. –

+0

Быстрый вопрос, это класс, который вы назвали Пример вашего класса UserModel? – keith