GSON,AndroidAnnotations - Expected BEGIN_OBJECT but was String

610 Views Asked by At

I searched similar topics but none of them helped me.

My JSON response is:

{
"success": "true",
"data": {
    "id": "x",
    "user_name": "xxx",
    "email": "[email protected]",
    "first_name": "xxx",
    "last_name": "xx",
    "position": "xxx",
    "session_id": "xxx"
}

}

My Java classes are:

Response:

public class Response {

public String success;
public Data data;

public Response() {
}
public Response(String success, Data data) {

    this.success = success;
    this.data = data;
}

}

Data

public class Data {

public String id;
public String user_name;
public String email;
public String first_name;
public String last_name;
public String position;
public String session_id;

public Data() {
}

public Data(String id, String user_name, String email, String first_name, String last_name, String position, String session_id) {
    this.id = id;
    this.user_name = user_name;
    this.email = email;
    this.first_name = first_name;
    this.last_name = last_name;
    this.position = position;
    this.session_id = session_id;
}

}

I am using android annotations to establish rest connection. My RestClient is:

@Rest(rootUrl = "http://xxx/services", converters = {GsonHttpMessageConverter.class})

public interface MyRestClient {

    @Post("/login.php")
    ResponseEntity<Response> login(User user);

    RestTemplate getRestTemplate();

    void setRestTemplate(RestTemplate restTemplate);
}

And in main activity I use:

ResponseEntity<Response> resp = restCli.login(new User("xxx","xxx"));

I get an error

Expected BEGIN_OBJECT but was String at line 1 column 4

I tried to change 'success' filed type to boolean,Boolean i Java class - didn't help. I tried changing the method return type in the rest interface to void and then no error, so I think the error is connected with wrong response class, but I have no idea what is wrong. Could you help me?

0

There are 0 best solutions below