Ta klasa ma dwa pola, które reprezentują imię i nazwisko osoby oraz datę urodzenia osoby. Te pola są opatrzone adnotacją @SerializedName . Parametr (wartość) tej adnotacji to nazwa, która ma być używana podczas serialisingi deserialisingobiektów. Na przykład pole personName w języku Java jest reprezentowane jako nazwa w formacie JSON.
@MuhammadAli z przyjemnością Ci pomogę. Możesz również dać mi kredyt przez głosowanie i przyjąć odpowiedź moja droga :)
Chintan Rathod
3
Negatywne wyborcy, proszę dodać swój komentarz tak, że mogę zrozumieć, co jest celem dół głosowania i mogę poprawić moją odpowiedź r .. :)
Chintan Rathod
4
Dobra odpowiedź… od Json
razu do rzeczy
Cieszę się, że to pomogło. :)
Chintan Rathod
1
Naprawdę pomocny!! ; Dziękuję bardzo :) @ChintanRathod
Imran
65
Tutaj jest już kilka odpowiedzi, ale chciałbym dodać, że jeśli używasz ProGuarddo zaciemniania swojego kodu i nie używasz @SerializedName("name")w swojej klasie modelu, to twój GSON nie zadziała. Ponieważ z powodu zaciemnienia nazwy zmiennych mogły zmienić się z String namena, String aco spowodowało zepsute parsowanie GSON, ponieważ GSON będzie szukał klucza aw json i zakończy się niepowodzeniem.
Określając @SerializedName, GSON nie będzie wyglądał w json na podstawie nazwy zmiennej, a po prostu użyje określonego @SerializedName.
Oczywiście możesz powiedzieć programowi proguard, aby nie zaciemniał Twojego modelu, ale jeśli chcesz, aby model został zaciemniony, musisz określić @SerializedName
Gr8 info, zwykłem mówić proguardowi, aby nie zaciemniał modeli. Teraz mogę to zrobić. :)
akashPatra
1
To jest bardzo ważne. Straciłem 2 godziny i wszędzie dodano @SerializedName.
Abhijit Kurane
2
Możesz poinstruować Proguard, aby nie zaciemniał twoich klas danych, określając @Keep nad klasą. To nie usunie ani nie zaciemni twojej klasy. Nie ma potrzeby jawnego dodawania @SerializedName do każdego pola, jeśli nazwa pola jest podobna do używanego do tego klucza Json.
Odpowiedzi:
Przykład klasy Java,
Ta klasa ma dwa pola, które reprezentują imię i nazwisko osoby oraz datę urodzenia osoby. Te pola są opatrzone adnotacją @SerializedName . Parametr (wartość) tej adnotacji to nazwa, która ma być używana podczas
serialising
ideserialising
obiektów. Na przykład pole personName w języku Java jest reprezentowane jako nazwa w formacie JSON.Przykład JSON,
źródło
Json
Tutaj jest już kilka odpowiedzi, ale chciałbym dodać, że jeśli używasz
ProGuard
do zaciemniania swojego kodu i nie używasz@SerializedName("name")
w swojej klasie modelu, to twój GSON nie zadziała. Ponieważ z powodu zaciemnienia nazwy zmiennych mogły zmienić się zString name
na,String a
co spowodowało zepsute parsowanie GSON, ponieważ GSON będzie szukał kluczaa
w json i zakończy się niepowodzeniem.Określając
@SerializedName
, GSON nie będzie wyglądał w json na podstawie nazwy zmiennej, a po prostu użyje określonego@SerializedName
.Oczywiście możesz powiedzieć programowi proguard, aby nie zaciemniał Twojego modelu, ale jeśli chcesz, aby model został zaciemniony, musisz określić
@SerializedName
źródło
Możesz poinstruować Proguard, aby nie zaciemniał twoich klas danych, określając @Keep nad klasą. To nie usunie ani nie zaciemni twojej klasy. Nie ma potrzeby jawnego dodawania @SerializedName do każdego pola, jeśli nazwa pola jest podobna do używanego do tego klucza Json.
źródło