API 数据的 Kotlin 类

maf*_*tis -1 android kotlin

我有以下结构的 API 数据:

{
    "data": [
        {
            "id": "a3d9b20a-f84c-483e-81af-f8d6a7e2de0f",
            "amount": 11000,
            "transport": 29000,
            "total": 183000,
            "weight": 14,
            "payment": "Cash",
            "payment_id": null,
            "payment_method": null,
            "accepted": 0,
            "customer": {
                "id": "2c8693d9-76ff-4bad-b7bd-bc3a1446a5e5",
                "name": "Admin",
                "store": false,
                "phone": null,
                "photo": null,
                "email": "admin@admin.com",
                "address": null,
                "role": "admin",
                "created_at": "2021-01-27T03:50:24.000000Z"
            },
            "laundry": {
                "id": "acfa7e2e-aeb9-40d6-a68c-b6c259468b6b",
                "name": "Test 01",
                "email": "gfg@jhjgj.gfu",
                "phone": "5344454",
                "address": "gfvfggfggkh",
                "photo": "http://example.com/images/3a1690bd48161f941b99af72c0098e34-1611653771.jpg",
                "verified": 1,
                "created_at": "2021-01-26T02:36:12.000000Z"
            },
            "driver": {
                "id": "7c5715e2-2e73-4103-a439-bc54d9982552",
                "dob": "17-11-1888",
                "gender": "male",
                "expire_date": "11 22",
                "plat_nu": "F 4152 FSD",
                "vehicle_brand": "Suzuki",
                "vehicle_type": "Motor",
                "no_sim": null,
                "exp_sim": null,
                "no_skck": null,
                "photo_sim": null,
                "photo_ktp": null,
                "orders": [
                    {
                        "id": "a3d9b20a-f84c-483e-81af-f8d6a7e2de0f",
                        "user_id": "2c8693d9-76ff-4bad-b7bd-bc3a1446a5e5",
                        "laundry_id": "acfa7e2e-aeb9-40d6-a68c-b6c259468b6b",
                        "driver_id": "7c5715e2-2e73-4103-a439-bc54d9982552",
                        "amount": 11000,
                        "transport": 29000,
                        "total": 183000,
                        "weight": 14,
                        "payment": "Cash",
                        "payment_id": null,
                        "payment_method": null,
                        "accepted": 0,
                        "created_at": "2021-01-31T02:21:37.000000Z",
                        "updated_at": "2021-01-31T02:21:37.000000Z"
                    },
                    {
                        "id": "c3d0b768-e461-48da-8dd6-c23d88562f9a",
                        "user_id": "2c8693d9-76ff-4bad-b7bd-bc3a1446a5e5",
                        "laundry_id": "acfa7e2e-aeb9-40d6-a68c-b6c259468b6b",
                        "driver_id": "7c5715e2-2e73-4103-a439-bc54d9982552",
                        "amount": 17000,
                        "transport": 15000,
                        "total": 267000,
                        "weight": 14,
                        "payment": "Cash",
                        "payment_id": null,
                        "payment_method": null,
                        "accepted": 0,
                        "created_at": "2021-02-01T02:19:25.000000Z",
                        "updated_at": "2021-02-01T02:19:25.000000Z"
                    }
                ],
                "created_at": "2021-01-29T04:36:23.000000Z"
            },
            "progresses": [
                {
                    "id": "6d4f502a-dab3-4419-8edf-84e73214b8be",
                    "order_id": "a3d9b20a-f84c-483e-81af-f8d6a7e2de0f",
                    "progress_id": "dc06eae1-a071-4ac0-a79d-a9c1ea737b05",
                    "created_at": "2021-01-31T02:21:37.000000Z",
                    "updated_at": "2021-01-31T02:21:37.000000Z",
                    "progress": {
                        "id": "dc06eae1-a071-4ac0-a79d-a9c1ea737b05",
                        "name": "Menginformasikan",
                        "photo": null,
                        "created_at": null,
                        "updated_at": null
                    }
                }
            ],
            "services": [
                {
                    "id": "036ff19b-91e3-47ec-8804-333f21027db7",
                    "name": null,
                    "photo": null,
                    "created_at": "2021-01-31T02:21:37.000000Z"
                },
                {
                    "id": "9a895f79-492d-416f-96ea-670567a69375",
                    "name": null,
                    "photo": null,
                    "created_at": "2021-01-31T02:21:37.000000Z"
                }
            ],
            "created_at": "2021-01-31T02:21:37.000000Z"
        }
    ],
    "message": "Data are ready."
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我的主要数据下面有相关数据,有些是对象,有些是数组。

如果我的数据只是我的主要项目对象,我会创建data class例如:

data class Orders (
    val id: String?,
    val amount: String?,
    val transport: String?,
    val total: String?,
    val weight: String?,
    val payment: String?,
    val payment_id: String?,
    val payment_method: String?,
    val accepted: String?,
) {
}
Run Code Online (Sandbox Code Playgroud)

一切都很顺利。

但我的问题是如何处理此项目下的相关数据,以便稍后我也可以将它们放在我的片段/活动中?亲戚是:

  1. customer (目的)
  2. laundry (目的)
  3. driver (对象 -> 下面也有数组)
  4. progresses (大批)
  5. services (大批)

sas*_*mar 5

在将 api 响应转换为数据类的同时,创建如下所示的数据模型类。然后根据您的需要通过其他数据类进行访问。

data class Orders(
val `data`: List<Data>,
val message: String
)


data class Data(
val accepted: Int,
val amount: Int,
val created_at: String,
val customer: Customer,
val driver: Driver,
val id: String,
val laundry: Laundry,
val payment: String,
val payment_id: Any,
val payment_method: Any,
val progresses: List<Progresse>,
val services: List<Service>,
val total: Int,
val transport: Int,
val weight: Int
 )

data class Order(
val accepted: Int,
val amount: Int,
val created_at: String,
val driver_id: String,
val id: String,
val laundry_id: String,
val payment: String,
val payment_id: Any,
val payment_method: Any,
val total: Int,
val transport: Int,
val updated_at: String,
val user_id: String,
val weight: Int
)

data class Progress(
val created_at: Any,
val id: String,
val name: String,
val photo: Any,
val updated_at: Any
)

data class Progresse(
val created_at: String,
val id: String,
val order_id: String,
val progress: Progress,
val progress_id: String,
val updated_at: String
)

data class Driver(
val created_at: String,
val dob: String,
val exp_sim: Any,
val expire_date: String,
val gender: String,
val id: String,
val no_sim: Any,
val no_skck: Any,
val orders: List<Order>,
val photo_ktp: Any,
val photo_sim: Any,
val plat_nu: String,
val vehicle_brand: String,
val vehicle_type: String
)


data class Laundry(
val address: String,
val created_at: String,
val email: String,
val id: String,
val name: String,
val phone: String,
val photo: String,
val verified: Int
)


data class Customer(
val address: Any,
val created_at: String,
val email: String,
val id: String,
val name: String,
val phone: Any,
val photo: Any,
val role: String,
val store: Boolean
)
Run Code Online (Sandbox Code Playgroud)