Apa tujuan dasar @SerializedName
anotasi di Android menggunakan Gson?
Beri saya beberapa contoh berbeda. Saya tidak mengerti tujuan utama menggunakannya.
Apa tujuan dasar @SerializedName
anotasi di Android menggunakan Gson?
Beri saya beberapa contoh berbeda. Saya tidak mengerti tujuan utama menggunakannya.
Jawaban:
Contoh kelas Java,
public class Person {
@SerializedName("name")
private String personName;
@SerializedName("bd")
private String birthDate;
}
Kelas ini memiliki dua bidang yang mewakili nama orang dan tanggal lahir seseorang. Bidang ini diberi anotasi dengan anotasi @SerializedName . Parameter (nilai) dari anotasi ini adalah nama yang akan digunakan kapan serialising
dan deserialising
objek. Misalnya, bidang personName Java direpresentasikan sebagai nama di JSON.
Contoh JSON,
{
"name":"chintan",
"bd":"01-01-1990"
}
Json
sangat membantu
Sudah ada beberapa jawaban di sini, tetapi saya ingin menambahkan bahwa jika Anda menggunakan ProGuard
untuk mengaburkan kode Anda & tidak digunakan @SerializedName("name")
di kelas model Anda, maka GSON Anda tidak akan berfungsi. Karena karena kebingungan, nama variabel Anda mungkin telah berubah dari String name
menjadi String a
mengakibatkan penguraian GSON rusak karena GSON akan mencari kunci a
ke json & itu akan gagal.
Dengan menentukan @SerializedName
, GSON tidak akan mencari di json berdasarkan nama variabel & hanya akan menggunakan yang ditentukan @SerializedName
.
Tentu saja Anda dapat memberi tahu proguard untuk tidak mengaburkan model Anda, tetapi jika Anda ingin model dikaburkan, Anda harus menentukan @SerializedName
Anda dapat menginstruksikan Proguard untuk tidak mengaburkan kelas data Anda dengan menentukan @Keep di atas kelas. Ini tidak akan menghapus atau mengaburkan kelas Anda. Tidak perlu menambahkan @SerializedName ke setiap kolom secara eksplisit jika nama kolom mirip dengan kunci Json yang digunakan untuk itu.