Retrofit + Robospice JSON return POJO with Null for nested field

212 Views Asked by At

In my project I use Robospice+Retrofit for exchange data with remoute server, everything work perfect but with one litle problem, - one of POJO objects have nested field null every time.

POJO class

public class Snapshot {

@SerializedName("records_count")
private Integer recordsCount;

@SerializedName("created")
private String created;

@SerializedName("modified")
private String modified;

@SerializedName("records")
private Records records;

@SerializedName("database_id")
private String databaseId;

@SerializedName("revision")
private Integer revision;

@SerializedName("size")
private Integer size;

public Integer getRecordsCount() {
    return recordsCount;
}

public void setRecordsCount(Integer recordsCount) {
    this.recordsCount = recordsCount;
}

public String getCreated() {
    return created;
}

public void setCreated(String created) {
    this.created = created;
}

public String getModified() {
    return modified;
}

public void setModified(String modified) {
    this.modified = modified;
}

public Records getRecords() {
    return records;
}

public void setRecords(Records records) {
    this.records = records;
}

public String getDatabaseId() {
    return databaseId;
}

public void setDatabaseId(String databaseId) {
    this.databaseId = databaseId;
}

public Integer getRevision() {
    return revision;
}

public void setRevision(Integer revision) {
    this.revision = revision;
}

public Integer getSize() {
    return size;
}

public void setSize(Integer size) {
    this.size = size;
}

}

Retrofit class

public class RetrofitSpiceService extends RetrofitGsonSpiceService {

private static final String TAG = "RetrofitSpiceService";

private static final String AUTHORIZATION_HEADER = "Authorization";
private static final String USER_AGENT_HEADER = "User-Agent";
private static final String USER_AGENT = "Cloud API Android Client Example/1.0";

@Override
protected String getServerUrl() {
    return "https://my.cloud-api.net";
}

@Override
public void onCreate() {
    super.onCreate();
    addRetrofitInterface(DataSyncAPI.class);
}

@Override
protected RestAdapter.Builder createRestAdapterBuilder() {

    RestAdapter.Builder builder = new RestAdapter.Builder();

    builder.setRequestInterceptor(new RequestInterceptor() {

        @Override
        public void intercept(RequestFacade request) {

            request.addHeader(USER_AGENT_HEADER, USER_AGENT);
            request.addHeader(AUTHORIZATION_HEADER, SharedPreferencesManager.getRegistrationToken(getApplicationContext()));

        }

    });

    builder.setEndpoint(getServerUrl());
    builder.setConverter(getConverter());

    return builder;
}

}

So, field records in Snapshot class equal null, why?

1

There are 1 best solutions below

0
Alper On

Did you try add a GSON converter with

Gson gson = builder.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create();
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint("http://localhost/api")
.setConverter(new GsonConverter(gson)).build();