SERG
SERG

Reputation: 3971

How should my retrofit json class be?

I have such json

{ "sentences": [ { "trans": "It works.", "orig": "Это работает.", "translit": "", "src_translit": "Eto rabotayet." } ], "src": "ru", "server_time": 12 }

Code :

 public interface TraslatorRetrofit {

@GET("/translate_a/t?client=x&text=text&hl=ru&sl=ru&tl=en")
void listRepos (@Query("text") String text, Callback<List<TranslateResp>> cb);}

public class TranslateResp {
   private List<String> sentences;
}

But i always recieve such error "Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column"

How should my class look like? Thanks.

Upvotes: 0

Views: 114

Answers (2)

SERG
SERG

Reputation: 3971

and here is another great stuff for JSON GEN - CLIENT CODE GENERATION TOOL http://jsongen.byingtondesign.com/

Upvotes: 0

Bharatesh
Bharatesh

Reputation: 9009

If request response is like this

{"sentences":
  [
  {
   "trans":"It works.","orig":"Это работает.",
    "translit":"","src_translit":"Eto rabotayet.",
    "src":"ru",
    "server_time":12
  }
]
}

then, your classes will be

public class Sentence {

    @Expose
    private String trans;
    @Expose
    private String orig;
    @Expose
    private String translit;
    @SerializedName("src_translit")
    @Expose
    private String srcTranslit;
    @Expose
    private String src;
    @SerializedName("server_time")
    @Expose
    private Integer serverTime;

    public String getTrans() {
        return trans;
    }

    public void setTrans(String trans) {
        this.trans = trans;
    }

    public String getOrig() {
        return orig;
    }

    public void setOrig(String orig) {
        this.orig = orig;
    }

    public String getTranslit() {
        return translit;
    }

    public void setTranslit(String translit) {
        this.translit = translit;
    }

    public String getSrcTranslit() {
        return srcTranslit;
    }

    public void setSrcTranslit(String srcTranslit) {
        this.srcTranslit = srcTranslit;
    }

    public String getSrc() {
        return src;
    }

    public void setSrc(String src) {
        this.src = src;
    }

    public Integer getServerTime() {
        return serverTime;
    }

    public void setServerTime(Integer serverTime) {
        this.serverTime = serverTime;
    }
}

Main Response Class

public class TranslateResp {

@Expose
private List<Sentence> sentences = new ArrayList<Sentence>();

public List<Sentence> getSentences() {
return sentences;
 }

public void setSentences(List<Sentence> sentences) {
this.sentences = sentences;
 }

}

Do visit Json Schema 2 Pojo

Upvotes: 1

Related Questions