2016-04-06 4 views
1

Я работаю с Retrofit и Gson Converter, но получаю это странное исключение. Для выполнения вызова я использую два URL-адреса. В обоих случаях я делаю тот же вызов и получаю тот же ответ на уровне полного журнала, но один из URL-адресов дает мне это исключение, и я не могу разобрать данные во втором случае.ConversionException with Retrofit и Gson

Использование Retrofit v1.9 и Gson v2.6.1.

Спасибо!

Ошибка:

E/UserCommunicator: retrofit.RetrofitError: com.google.gson.JsonSyntaxException: Expecting character, got: 
    retrofit.RetrofitError: com.google.gson.JsonSyntaxException: Expecting character, got: 
     at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:378) 
     at retrofit.RestAdapter$RestHandler.access$100(RestAdapter.java:220) 
     at retrofit.RestAdapter$RestHandler$2.obtainResponse(RestAdapter.java:278) 
     at retrofit.CallbackRunnable.run(CallbackRunnable.java:42) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
     at retrofit.Platform$Android$2$1.run(Platform.java:142) 
     at java.lang.Thread.run(Thread.java:818) 
    Caused by: retrofit.converter.ConversionException: com.google.gson.JsonSyntaxException: Expecting character, got: 
     at retrofit.converter.GsonConverter.fromBody(GsonConverter.java:67) 
     at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:362) 
     ... 7 more 
    Caused by: com.google.gson.JsonSyntaxException: Expecting character, got: 
     at com.google.gson.internal.bind.TypeAdapters$16.read(TypeAdapters.java:397) 
     at com.google.gson.internal.bind.TypeAdapters$16.read(TypeAdapters.java:388) 
     at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:116) 
     at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:216) 
     at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:116) 
     at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:216) 
     at com.google.gson.Gson.fromJson(Gson.java:879) 
     at com.google.gson.Gson.fromJson(Gson.java:844) 
     at retrofit.converter.GsonConverter.fromBody(GsonConverter.java:63) 
     ... 8 more 
E/LoginActivity: com.google.gson.JsonSyntaxException: Expecting character, got: 

Json с сервера:

{ 
    "user_data": { 
     "user_id": "4", 
     "gid": "", 
     "gname": "", 
     "gphoto": "", 
     "fid": "", 
     "fname": "", 
     "fphoto": "", 
     "name": "John", 
     "surname": "Doe", 
     "email": "[email protected]", 
     "birthday": null, 
     "registered": null, 
     "username": null, 
     "user_type": "a", 
     "rnd": "xxxxxxxxxxx", 
     "user_lang": "en", 
     "clinic_name": null, 
     "clinic_id": null, 
     "admin": null, 
     "state": null, 
     "gender": "", 
     "cel": "60000000" 
    }, 
    "clinic_data": { 
     "clinic_name": "Doe", 
     "clinic_id": "2", 
     "plan": "plan", 
     "mod_finance": "0", 
     "mod_surgery": "0", 
     "mod_ortodoncy": "0", 
     "staff_type": "staff_type", 
     "admin": "0", 
     "state": "state", 
     "address": "address", 
     "latitude": "0.0", 
     "longitude": "0.0", 
     "cel": "", 
     "nr_licenses": null, 
     "expires": null 
    }, 
    "response": "Success" 
} 
+0

Убедитесь, что вы создали два РАЗРЯДА для декодирования выше JSON –

+0

Это хорошо вы включили ошибку, но у вас есть действительный JSON, так что проблема код, который вы не показали. Пожалуйста, отредактируйте ваш вопрос –

ответ

0

Ваши GSON объекты, вероятно, неправильно. Вы можете generate Java classes based on your JSON for GSON.

package com.example; 

import com.google.gson.annotations.Expose; 
import com.google.gson.annotations.SerializedName; 

public class ClinicData { 

    @SerializedName("clinic_name") 
    @Expose 
    private String clinicName; 
    @SerializedName("clinic_id") 
    @Expose 
    private String clinicId; 
    @SerializedName("plan") 
    @Expose 
    private String plan; 
    @SerializedName("mod_finance") 
    @Expose 
    private String modFinance; 
    @SerializedName("mod_surgery") 
    @Expose 
    private String modSurgery; 
    @SerializedName("mod_ortodoncy") 
    @Expose 
    private String modOrtodoncy; 
    @SerializedName("staff_type") 
    @Expose 
    private String staffType; 
    @SerializedName("admin") 
    @Expose 
    private String admin; 
    @SerializedName("state") 
    @Expose 
    private String state; 
    @SerializedName("address") 
    @Expose 
    private String address; 
    @SerializedName("latitude") 
    @Expose 
    private String latitude; 
    @SerializedName("longitude") 
    @Expose 
    private String longitude; 
    @SerializedName("cel") 
    @Expose 
    private String cel; 
    @SerializedName("nr_licenses") 
    @Expose 
    private Object nrLicenses; 
    @SerializedName("expires") 
    @Expose 
    private Object expires; 

    /** 
    * 
    * @return 
    *  The clinicName 
    */ 
    public String getClinicName() { 
     return clinicName; 
    } 

    /** 
    * 
    * @param clinicName 
    *  The clinic_name 
    */ 
    public void setClinicName(String clinicName) { 
     this.clinicName = clinicName; 
    } 

    /** 
    * 
    * @return 
    *  The clinicId 
    */ 
    public String getClinicId() { 
     return clinicId; 
    } 

    /** 
    * 
    * @param clinicId 
    *  The clinic_id 
    */ 
    public void setClinicId(String clinicId) { 
     this.clinicId = clinicId; 
    } 

    /** 
    * 
    * @return 
    *  The plan 
    */ 
    public String getPlan() { 
     return plan; 
    } 

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

    /** 
    * 
    * @return 
    *  The modFinance 
    */ 
    public String getModFinance() { 
     return modFinance; 
    } 

    /** 
    * 
    * @param modFinance 
    *  The mod_finance 
    */ 
    public void setModFinance(String modFinance) { 
     this.modFinance = modFinance; 
    } 

    /** 
    * 
    * @return 
    *  The modSurgery 
    */ 
    public String getModSurgery() { 
     return modSurgery; 
    } 

    /** 
    * 
    * @param modSurgery 
    *  The mod_surgery 
    */ 
    public void setModSurgery(String modSurgery) { 
     this.modSurgery = modSurgery; 
    } 

    /** 
    * 
    * @return 
    *  The modOrtodoncy 
    */ 
    public String getModOrtodoncy() { 
     return modOrtodoncy; 
    } 

    /** 
    * 
    * @param modOrtodoncy 
    *  The mod_ortodoncy 
    */ 
    public void setModOrtodoncy(String modOrtodoncy) { 
     this.modOrtodoncy = modOrtodoncy; 
    } 

    /** 
    * 
    * @return 
    *  The staffType 
    */ 
    public String getStaffType() { 
     return staffType; 
    } 

    /** 
    * 
    * @param staffType 
    *  The staff_type 
    */ 
    public void setStaffType(String staffType) { 
     this.staffType = staffType; 
    } 

    /** 
    * 
    * @return 
    *  The admin 
    */ 
    public String getAdmin() { 
     return admin; 
    } 

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

    /** 
    * 
    * @return 
    *  The state 
    */ 
    public String getState() { 
     return state; 
    } 

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

    /** 
    * 
    * @return 
    *  The address 
    */ 
    public String getAddress() { 
     return address; 
    } 

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

    /** 
    * 
    * @return 
    *  The latitude 
    */ 
    public String getLatitude() { 
     return latitude; 
    } 

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

    /** 
    * 
    * @return 
    *  The longitude 
    */ 
    public String getLongitude() { 
     return longitude; 
    } 

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

    /** 
    * 
    * @return 
    *  The cel 
    */ 
    public String getCel() { 
     return cel; 
    } 

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

    /** 
    * 
    * @return 
    *  The nrLicenses 
    */ 
    public Object getNrLicenses() { 
     return nrLicenses; 
    } 

    /** 
    * 
    * @param nrLicenses 
    *  The nr_licenses 
    */ 
    public void setNrLicenses(Object nrLicenses) { 
     this.nrLicenses = nrLicenses; 
    } 

    /** 
    * 
    * @return 
    *  The expires 
    */ 
    public Object getExpires() { 
     return expires; 
    } 

    /** 
    * 
    * @param expires 
    *  The expires 
    */ 
    public void setExpires(Object expires) { 
     this.expires = expires; 
    } 

} 


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

    @SerializedName("user_data") 
    @Expose 
    private UserData userData; 
    @SerializedName("clinic_data") 
    @Expose 
    private ClinicData clinicData; 
    @SerializedName("response") 
    @Expose 
    private String response; 

    /** 
    * 
    * @return 
    *  The userData 
    */ 
    public UserData getUserData() { 
     return userData; 
    } 

    /** 
    * 
    * @param userData 
    *  The user_data 
    */ 
    public void setUserData(UserData userData) { 
     this.userData = userData; 
    } 

    /** 
    * 
    * @return 
    *  The clinicData 
    */ 
    public ClinicData getClinicData() { 
     return clinicData; 
    } 

    /** 
    * 
    * @param clinicData 
    *  The clinic_data 
    */ 
    public void setClinicData(ClinicData clinicData) { 
     this.clinicData = clinicData; 
    } 

    /** 
    * 
    * @return 
    *  The response 
    */ 
    public String getResponse() { 
     return response; 
    } 

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

public class UserData { 

    @SerializedName("user_id") 
    @Expose 
    private String userId; 
    @SerializedName("gid") 
    @Expose 
    private String gid; 
    @SerializedName("gname") 
    @Expose 
    private String gname; 
    @SerializedName("gphoto") 
    @Expose 
    private String gphoto; 
    @SerializedName("fid") 
    @Expose 
    private String fid; 
    @SerializedName("fname") 
    @Expose 
    private String fname; 
    @SerializedName("fphoto") 
    @Expose 
    private String fphoto; 
    @SerializedName("name") 
    @Expose 
    private String name; 
    @SerializedName("surname") 
    @Expose 
    private String surname; 
    @SerializedName("email") 
    @Expose 
    private String email; 
    @SerializedName("birthday") 
    @Expose 
    private Object birthday; 
    @SerializedName("registered") 
    @Expose 
    private Object registered; 
    @SerializedName("username") 
    @Expose 
    private Object username; 
    @SerializedName("user_type") 
    @Expose 
    private String userType; 
    @SerializedName("rnd") 
    @Expose 
    private String rnd; 
    @SerializedName("user_lang") 
    @Expose 
    private String userLang; 
    @SerializedName("clinic_name") 
    @Expose 
    private Object clinicName; 
    @SerializedName("clinic_id") 
    @Expose 
    private Object clinicId; 
    @SerializedName("admin") 
    @Expose 
    private Object admin; 
    @SerializedName("state") 
    @Expose 
    private Object state; 
    @SerializedName("gender") 
    @Expose 
    private String gender; 
    @SerializedName("cel") 
    @Expose 
    private String cel; 

    /** 
    * 
    * @return 
    *  The userId 
    */ 
    public String getUserId() { 
     return userId; 
    } 

    /** 
    * 
    * @param userId 
    *  The user_id 
    */ 
    public void setUserId(String userId) { 
     this.userId = userId; 
    } 

    /** 
    * 
    * @return 
    *  The gid 
    */ 
    public String getGid() { 
     return gid; 
    } 

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

    /** 
    * 
    * @return 
    *  The gname 
    */ 
    public String getGname() { 
     return gname; 
    } 

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

    /** 
    * 
    * @return 
    *  The gphoto 
    */ 
    public String getGphoto() { 
     return gphoto; 
    } 

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

    /** 
    * 
    * @return 
    *  The fid 
    */ 
    public String getFid() { 
     return fid; 
    } 

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

    /** 
    * 
    * @return 
    *  The fname 
    */ 
    public String getFname() { 
     return fname; 
    } 

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

    /** 
    * 
    * @return 
    *  The fphoto 
    */ 
    public String getFphoto() { 
     return fphoto; 
    } 

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

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

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

    /** 
    * 
    * @return 
    *  The surname 
    */ 
    public String getSurname() { 
     return surname; 
    } 

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

    /** 
    * 
    * @return 
    *  The email 
    */ 
    public String getEmail() { 
     return email; 
    } 

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

    /** 
    * 
    * @return 
    *  The birthday 
    */ 
    public Object getBirthday() { 
     return birthday; 
    } 

    /** 
    * 
    * @param birthday 
    *  The birthday 
    */ 
    public void setBirthday(Object birthday) { 
     this.birthday = birthday; 
    } 

    /** 
    * 
    * @return 
    *  The registered 
    */ 
    public Object getRegistered() { 
     return registered; 
    } 

    /** 
    * 
    * @param registered 
    *  The registered 
    */ 
    public void setRegistered(Object registered) { 
     this.registered = registered; 
    } 

    /** 
    * 
    * @return 
    *  The username 
    */ 
    public Object getUsername() { 
     return username; 
    } 

    /** 
    * 
    * @param username 
    *  The username 
    */ 
    public void setUsername(Object username) { 
     this.username = username; 
    } 

    /** 
    * 
    * @return 
    *  The userType 
    */ 
    public String getUserType() { 
     return userType; 
    } 

    /** 
    * 
    * @param userType 
    *  The user_type 
    */ 
    public void setUserType(String userType) { 
     this.userType = userType; 
    } 

    /** 
    * 
    * @return 
    *  The rnd 
    */ 
    public String getRnd() { 
     return rnd; 
    } 

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

    /** 
    * 
    * @return 
    *  The userLang 
    */ 
    public String getUserLang() { 
     return userLang; 
    } 

    /** 
    * 
    * @param userLang 
    *  The user_lang 
    */ 
    public void setUserLang(String userLang) { 
     this.userLang = userLang; 
    } 

    /** 
    * 
    * @return 
    *  The clinicName 
    */ 
    public Object getClinicName() { 
     return clinicName; 
    } 

    /** 
    * 
    * @param clinicName 
    *  The clinic_name 
    */ 
    public void setClinicName(Object clinicName) { 
     this.clinicName = clinicName; 
    } 

    /** 
    * 
    * @return 
    *  The clinicId 
    */ 
    public Object getClinicId() { 
     return clinicId; 
    } 

    /** 
    * 
    * @param clinicId 
    *  The clinic_id 
    */ 
    public void setClinicId(Object clinicId) { 
     this.clinicId = clinicId; 
    } 

    /** 
    * 
    * @return 
    *  The admin 
    */ 
    public Object getAdmin() { 
     return admin; 
    } 

    /** 
    * 
    * @param admin 
    *  The admin 
    */ 
    public void setAdmin(Object admin) { 
     this.admin = admin; 
    } 

    /** 
    * 
    * @return 
    *  The state 
    */ 
    public Object getState() { 
     return state; 
    } 

    /** 
    * 
    * @param state 
    *  The state 
    */ 
    public void setState(Object state) { 
     this.state = state; 
    } 

    /** 
    * 
    * @return 
    *  The gender 
    */ 
    public String getGender() { 
     return gender; 
    } 

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

    /** 
    * 
    * @return 
    *  The cel 
    */ 
    public String getCel() { 
     return cel; 
    } 

    /** 
    * 
    * @param cel 
    *  The cel 
    */ 
    public void setCel(String cel) { 
     this.cel = cel; 
    } 
} 
Смежные вопросы