Retrofit - 我可以映射响应数据字段吗?

Retrofit - Can I map response data fields?

我是 testing/creating 使用 Retrofit 的新 Basecamp API 的 REST 客户端。它看起来像这样:

class Project {
  String name;
  String appUrl;
}

interface Basecamp {
    @GET("/projects.json")
    List<Project> projects();
}

在 json 响应中,appUrl 的源字段称为 app_url。除了重命名 class 中的字段之外,是否有一种简单的方法可以将响应数据映射到我的数据结构?

如果您使用 Jackson JSON 通过 Retrofit 进行解析,您可以使用 @JsonProperty 注释:

示例:

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;

@JsonIgnoreProperties (ignoreUnknown = true)
    class Project {
      @JsonProperty("name")
      String name;
      @JsonProperty("app_url")
      String appUrl;
    }

所以我在这个question中找到了答案。事实证明这可以使用 Gson 解决:

class Project {
  String name;

  @SerializedName("app_url")
  String appUrl;
}