首页 > 解决方案 > Android - Moshi 中的多种响应类型

问题描述

我可以从服务器获取以下 JSON 数据:

{
    "id": 1,
    "groupName": "MyBestFriends"
}

在我的 Android 项目中,我Moshi用来处理这个响应。特别是,我将以下数据类用于该类型的响应:

@JsonClass(generateAdapter = true)
data class Group(
    val id: Long,
    val groupName:String
)

所以,但如果请求的组不存在,那么我还可以获得以下 JSON 响应:

{
    "detail": "Not found."
}

如何,我的 Group 数据类也能处理这个?我想要的是处理两种类型的响应,但只有一个数据类?那可能吗 ?

注意:当我在早期的 Android 项目中使用 Java 和 GSON 时,我可以@SerializedName对字段使用注释,并且 GSON 适配器中的任何 JSON 响应都将其映射到给定的类。所以,在我的情况下,它会是这样的:

public class Group {

    @SerializedName("id")
    private Long id;

    @SerializedName("groupName")
    private String groupName;

    @SerializedName("detail")
    private String detail;

    // getter & setter
}

Moshi 也可以做到这一点吗?

标签: androidjsonmoshi

解决方案


是的!在编码和解码时,您可以@Json(name="detail")在您的字段上使用它来为其分配名称。


推荐阅读