Retrofit: Attempted to deserialize a java.lang.Class. Forgot to register a type adapter?

Created on 31 Aug 2016  路  5Comments  路  Source: square/retrofit

This is regarding the StackOverflow question http://stackoverflow.com/q/39232330/6737655
The request is being done, but the response data seems empty. I guess it's due to an empty string fetched. Am I wrong?

Most helpful comment

You have a Class in your model:

Class<?> c = this.getClass();

This isn't supported by whichever serialization library you are using because you can't really serialize a class.

All 5 comments

You have a list of Class in your model:

private List<Class> classes = new ArrayList<Class>();

This isn't supported by whichever serialization library you are using because you can't really serialize a class.

I am also receiving the same error when trying to POST some data.

Error: java.lang.UnsupportedOperationException: Attempted to serialize java.lang.Class: models.reviews.ResultInfo. Forgot to register a type adapter?

public class Reviews {

private String Description;

private boolean IsSuccess;

private ArrayList<ResultInfo> ResultInfo;

private int ErrorCode;


public String getDescription() {
    return Description;
}

public void setDescription(String description) {
    Description = description;
}

public boolean isSuccess() {
    return IsSuccess;
}

public void setSuccess(boolean success) {
    IsSuccess = success;
}

public ArrayList<models.reviews.ResultInfo> getResultInfo() {
    return ResultInfo;
}

public void setResultInfo(ArrayList<models.reviews.ResultInfo> resultInfo) {
    ResultInfo = resultInfo;
}

public int getErrorCode() {
    return ErrorCode;
}

public void setErrorCode(int errorCode) {
    ErrorCode = errorCode;
}

}

public class ResultInfo {

Class<?> c = this.getClass();

HashMap<String, Object> stringObjectHashMap = new HashMap<>();

private String VisitedOn;

private int ServiceScore;

private int FoodScore;

private int TotalScore;

private int AmbienceScore;

private String Email;

private int PartySize;

private int ValueScore;

private int SiteRatingCode;

private int SiteCode;

private String IPAddress;

private String FullName;

private String ReviewComments;

private boolean IsRecomend;

private int MemberCode;

private String ReviewDate;

private int VisitPurposeCode;

private String ReviewTitle;


public ResultInfo() {
    stringObjectHashMap.put("VisitedOn", VisitedOn);

}


public int getAmbienceScore() {
    return AmbienceScore;
}

public void setAmbienceScore(int ambienceScore) {
    AmbienceScore = ambienceScore;
}

public String getVisitedOn() {
    return VisitedOn;
}

public void setVisitedOn(String visitedOn) {
    VisitedOn = visitedOn;
}

public int getServiceScore() {
    return ServiceScore;
}

public void setServiceScore(int serviceScore) {
    ServiceScore = serviceScore;
}

public int getFoodScore() {
    return FoodScore;
}

public void setFoodScore(int foodScore) {
    FoodScore = foodScore;
}

public int getTotalScore() {
    return TotalScore;
}

public void setTotalScore(int totalScore) {
    TotalScore = totalScore;
}

public String getEmail() {
    return Email;
}

public void setEmail(String email) {
    Email = email;
}

public int getPartySize() {
    return PartySize;
}

public void setPartySize(int partySize) {
    PartySize = partySize;
}

public int getValueScore() {
    return ValueScore;
}

public void setValueScore(int valueScore) {
    ValueScore = valueScore;
}

public int getSiteRatingCode() {
    return SiteRatingCode;
}

public void setSiteRatingCode(int siteRatingCode) {
    SiteRatingCode = siteRatingCode;
}

public int getSiteCode() {
    return SiteCode;
}

public void setSiteCode(int siteCode) {
    SiteCode = siteCode;
}

public String getIPAddress() {
    return IPAddress;
}

public void setIPAddress(String IPAddress) {
    this.IPAddress = IPAddress;
}

public String getFullName() {
    return FullName;
}

public void setFullName(String fullName) {
    FullName = fullName;
}

public String getReviewComments() {
    return ReviewComments;
}

public void setReviewComments(String reviewComments) {
    ReviewComments = reviewComments;
}

public boolean isRecomend() {
    return IsRecomend;
}

public void setRecomend(boolean recomend) {
    IsRecomend = recomend;
}

public int getMemberCode() {
    return MemberCode;
}

public void setMemberCode(int memberCode) {
    MemberCode = memberCode;
}

public String getReviewDate() {
    return ReviewDate;
}

public void setReviewDate(String reviewDate) {
    ReviewDate = reviewDate;
}

public int getVisitPurposeCode() {
    return VisitPurposeCode;
}

public void setVisitPurposeCode(int visitPurposeCode) {
    VisitPurposeCode = visitPurposeCode;
}

public String getReviewTitle() {
    return ReviewTitle;
}

public void setReviewTitle(String reviewTitle) {
    ReviewTitle = reviewTitle;
}

public void setData(String name, String value, int value2, boolean value3) {

    L.e(name + "  " + value + "  " + value2 + "  " + value3);

    try {

        Field chap = c.getDeclaredField(name);

        if (value != null) {

            chap.set(this, value);
        } else if (value2 != 0) {
            chap.set(this, value2);
        } else {
            chap.set(this, value3);
        }


    } catch (Exception e) {
        e.printStackTrace();

    }

}

}

You have a Class in your model:

Class<?> c = this.getClass();

This isn't supported by whichever serialization library you are using because you can't really serialize a class.

@nishantt12 as Jake told, you are using the word 'Class' in your model...generic words like Class, String, etc shouldn't be used like that... In my case, I had mistyped Classes as Class, which was the error..
@ JakeWharton thanx for clearing

@JakeWharton thanx for clearing

Was this page helpful?
0 / 5 - 0 ratings