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.


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"
}

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


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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.