使用Retrofit将JSON属性简单自定义映射到对象属性

时间:2014-06-03 04:30:09

标签: android json gson retrofit

在RetroFit中定义JSON属性到特定对象属性的自定义映射的最简单方法是什么?

一组“奖励”的JSON响应示例:

[
  {
    "name" : "$5 Voucher",
    "description" : "Get $5 off your next purchase",
    "assets" : {
      "icon" : "icon.png"
    }
  }
]

我的Android项目中的奖励课程:

public class Reward {
  @SerializedName("name")
  private String name;

  @SerializedName("description")
  private String description;

  @SerializedName("icon")
  private String icon;
}

因为名称和描述与服务器响应1:1映射,所以RetroFit在执行映射时没有问题,但“icon”为空,因为我无法将assets.icon的自定义路径映射到{{1 }}

在iOS的RestKit库中,一个基本功能是定义custom object mapping,它允许您使用一些键/值对轻松定义这些映射。 RetroFit中是否存在类似的东西?我看到的每个解决方案似乎都涉及到制作自定义转换器的大量额外代码。有没有更简单的方法?

1 个答案:

答案 0 :(得分:2)

试试这个:

class Reward {
    String name;
    String description;
    Asset assets;

    class Asset {
        String icon;
    }
}