Допустим, у нас есть следующие структуры 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?
Оцените, можете ли вы предоставить пример кода для реализации пользовательских аннотаций.Использование интерфейсов это не то, что я ищу.