java - Retrofit + Robospice JSON 返回 POJO,嵌套字段为 Null

标签 java gson retrofit pojo robospice

在我的项目中,我使用 Robospice+Retrofit 与远程服务器交换数据,一切都很完美,但有一个小问题,- POJO 对象之一每次都嵌套字段为 null。

POJO类

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;
}

}

改造类

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;
}

}

那么,Snapshot 类中的字段 records 等于 null,为什么?

最佳答案

您是否尝试添加 GSON 转换器

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

关于java - Retrofit + Robospice JSON 返回 POJO,嵌套字段为 Null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34920212/

相关文章:

java - 如何解析Json字符串中的符号 ":"

java - 确认传递到 Spring Rest Endpoint 的 RequestBody 的无效输入的方法

java - 使用 Gson 加载对象

java - 读取 JSON - Retrofit - Android Studio

java - Mysql插入与选择不同

java - Azure 服务总线 - 订阅和 DLQ

java - 使用 Gson 序列化和反序列化枚举

java - Gson如何获取序列化名称

java - 无法使用 Retrofit 从我的模型类中获取所有数据

android - 将 json 映射到改造对象 (GSON)