Apa tujuan dasar anotasi @SerializedName di Android menggunakan Gson

110

Apa tujuan dasar @SerializedNameanotasi di Android menggunakan Gson?

Beri saya beberapa contoh berbeda. Saya tidak mengerti tujuan utama menggunakannya.

Muhammad Ali
sumber
Apa kata javadoc?
Sotirios Delimanolis
saya tidak mengerti apa yang dikatakan?
Muhammad Ali
itu akan mengidentifikasi pengidentifikasi properti yang memiliki properti ini dari data json
Amrut Bidri
1
Anda dapat melihat penjelasan yang luar biasa ini futurestud.io/tutorials/…
Abhishek Kumar

Jawaban:

254

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 serialisingdan deserialisingobjek. Misalnya, bidang personName Java direpresentasikan sebagai nama di JSON.

Contoh JSON,

{
    "name":"chintan",
    "bd":"01-01-1990"
}
Chintan Rathod
sumber
2
@MuhammadAli senang membantu Anda. Anda juga dapat memberi saya kredit dengan suara positif dan menerima jawaban sayangku :)
Chintan Rathod
3
Para pemilih negatif, silakan tambahkan komentar Anda sehingga saya dapat memahami apa tujuan dari suara negatif dan saya dapat meningkatkan jawaban saya dan seterusnya .. :)
Chintan Rathod
4
Jawaban bagus .... Langsung ke intinya .... Contoh dengan Jsonsangat membantu
Devrath
Senang bisa membantu. :)
Chintan Rathod
1
Sangat membantu !! ; Terima kasih banyak :) @ChintanRathod
Imran
64

Sudah ada beberapa jawaban di sini, tetapi saya ingin menambahkan bahwa jika Anda menggunakan ProGuarduntuk 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 namemenjadi String amengakibatkan penguraian GSON rusak karena GSON akan mencari kunci ake 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

Sandip Fichadiya
sumber
1
Info Gr8, saya biasa memberi tahu proguard untuk tidak mengaburkan model. Sekarang, dengan ini saya bisa melakukannya. :)
akashPatra
1
Ini sangat penting. Hilang 2 jam dan telah menambahkan @SerializedName di mana-mana.
Abhijit Kurane
2

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.

Alankar Gupta
sumber