假设我们具有以下JSON结构:
"data": [
{
"order_id": 460,
"order_no": "365"
},
....
]
"data": {
"id": 460,
"order_no": "365"
}
一个是订单清单,另一个是订单明细。为了解析这样的结构,我想重用相同的类。
data class Order (
@Json(name = "id") val id: Int?,
@Json(name = "order_id") val orderId: Int?,
@Json(name = "order_no") val orderNumber: Int
)
data class OrderListingResponse (
@Json(name = "data") val data: List<Order>
)
data class OrderDetailsResponse (
@Json(name = "data") val data: Order
)
在具有相同数据的不同属性命名变得太多之前,此实现看起来还可以。我想将多个属性合并为一个,以便使可重用的类更短,更优雅,以用于订单清单和订单详细信息:
data class Order (
@Json(names = ["id", "order_id"]) val id: Int,
@Json(name = "order_no") val orderNumber: Int
)
如何使用Moshi来实现这样的结果而不在类中创建其他字段,而只是在JSON中以不同的属性命名重用同一字段?
赞赏您是否可以提供用于自定义注释实现的示例代码。使用接口不是我想要的。
答案 0 :(得分:0)
您需要创建一个自定义类型适配器,以将多个JSON字段整合到一个属性中。
步骤:
创建一个自定义类型适配器,它将您的json字段转换为属性。 (使用您的order_id / id逻辑)。
向Moshi.Builder