Jadi pada tulisan ini saya ingin membagikan bagaimana cara mendapatkan value ketika response berganti atau memiliki beberapa varian. Misalnya field kita harus ambil source_id namun ketika value itu tidak ada kita ambil dari field id. Apakah kalian paham? jika belum coba lihat response berikut ini ya :

{
"code" : "200"
"message" : "submit success"
"data" : {
        "submit_id" : "12345",
        "user" : "xcc123"
    }
}
{
"code" : "200"
"message" : "submit success"
"data" : {
        "id" : "12345",
        "user" : "xcc123"
    }
}

Kedua response tersebut memiliki format yang hampir sama, bedanya adalah field id dan submit_id. Ketika kalian memiliki case dimana harus mengambil id atau submit_id maka inilah yang kita bahas. saya juga agak sulit memberi judulnya ya hehe

Untuk mengatasi hal tersebut teman-teman bisa menggunakan code seperti ini :

import com.google.gson.annotations.SerializedName

data class Store(
    @SerializedName("store_id", alternate = ["id"])
    val storeId: Int,
    @SerializedName("user")
    val user: String
)

Cukup gampang ya mengatasinya, ini juga biasanya digunakan ketika teman-teman berurusan varian bahasa namun valuenya dari response API. Demikianlah, semoga bermanfaat ya teman-teman 🙂

Note :

  1. Backward Compatibility:
    • Ini mengacu pada kemampuan sistem untuk bekerja dengan versi lama dari data atau API. Dalam kasus ini, data JSON yang mungkin memiliki variasi dalam penamaan kunci (misalnya, store_id vs id).
    • Dengan menggunakan fitur seperti @SerializedName dengan alternate, Anda dapat memastikan bahwa aplikasi Anda tetap kompatibel dengan data yang dihasilkan oleh versi API sebelumnya atau oleh berbagai sumber yang mungkin memiliki variasi dalam struktur data mereka.
  2. Version Compatibility:
    • Ini berhubungan dengan bagaimana aplikasi Anda dapat menangani berbagai versi dari data atau API. Dalam API yang berkembang, kadang-kadang nama kunci di JSON berubah seiring waktu. Dengan mendukung banyak nama kunci, Anda memastikan aplikasi Anda dapat menangani data dari berbagai versi API tanpa memerlukan perubahan kode yang signifikan.

Categorized in:

Tagged in:

, ,