Gson kullanarak Android'de @SerializedName ek açıklamasının temel amacı nedir


110

@SerializedNameGson kullanan Android'de ek açıklamanın temel amacı nedir?

Bana farklı örnekler ver. Kullanmanın temel amacını anlayamıyorum.


Javadoc ne diyor?
Sotirios Delimanolis

ne dediğini anlayamıyorum
Muhammed Ali,

bu mülkün ait olduğu mülk tanımlayıcısını json verilerinden
tanımlayacaktır

1
Bu harika açıklamayı futurestud.io/tutorials/…
Abhishek Kumar

Yanıtlar:


254

Java sınıfı örneği,

public class Person {

    @SerializedName("name")
    private String personName;

    @SerializedName("bd")
    private String birthDate;

}

Bu sınıf, kişinin adını ve doğum tarihini temsil eden iki alana sahiptir. Bu alanlar, @SerializedName ek açıklaması ile not edilir. Bu ek açıklamanın parametresi (değeri), ne zaman serialisingve deserialisingnesnelerde kullanılacak addır . Örneğin, Java alan PERSONNAME olarak temsil edilir isim .

JSON Örneği,

{
    "name":"chintan",
    "bd":"01-01-1990"
}

2
@MuhammadAli size yardımcı olmaktan zevk duyarım. Ayrıca olumlu oy vererek bana kredi verebilir ve cevabı kabul edebilirsin canım :)
Chintan Rathod

3
Olumsuz seçmenler, olumsuz oylamanın amacının ne olduğunu anlayabilmem ve cevabımı ileriye
dönük olarak

4
İyi cevap .... Tam Json
anlamıyla

Yardımcı olmasına sevindim. :)
Chintan Rathod

1
Gerçekten yardımcı!! ; Çok teşekkür ederim :) @ChintanRathod
Imran

65

Burada zaten birkaç cevap var, ancak ProGuardkodunuzu @SerializedName("name")gizlemek için kullanıyorsanız ve model sınıfınızda kullanmıyorsanız, GSON'nuzun çalışmayacağını eklemek isterim. Şaşırtmaca nedeniyle, sizin değişken adları gelen değişmiş olabilir çünkü String namehiç String akırık GSON GSON anahtarının arayacaktır olarak ayrıştırma içine çıkana json içine & o başarısız olur.

Belirterek @SerializedName, GSON değişken adına göre json bakmaz & sadece belirtilen kullanacaktır @SerializedName.

Elbette proguard'a modelinizi şaşırtmamasını söyleyebilirsiniz, ancak modelin gizlenmesini istiyorsanız, o zaman şunu belirtmelisiniz: @SerializedName


1
Gr8 bilgisi, proguard'a modelleri gizlememesini söylerdim. Şimdi, bununla yapabilirim. :)
akashPatra

1
Bu çok çok önemli. 2 saat kaybettiniz ve her yerde @SerializedName eklendi.
Abhijit Kurane

2

Sınıfın üstünde @Keep belirterek Proguard'a veri sınıflarınızı şaşırtmaması talimatını verebilirsiniz. Bu, sınıfınızı ne ortadan kaldırır ne de şaşırtmaz. Alan adı, kendisi için kullanılan Json anahtarına benziyorsa, her alana açıkça @ SerileştirilmişAdı eklemenize gerek yoktur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.