2015-03-10 21 views
45

qualcuno può dirmi qual è lo scopo fondamentale di @SerializedName annotazione in Android usando GSONqual è lo scopo fondamentale di @SerializedName annotazioni in Android usando GSON

Dammi un po 'esempio diverso. Ho controllato su un sito Web diverso ma non riesco a capire quale sia lo scopo principale del suo utilizzo.

+0

cosa dice il javadoc? –

+0

non riesco a capire cosa si dice? –

+0

identificherà il identificatore di proprietà a cui questa proprietà appartiene dai dati json –

risposta

123

Java classe di esempio,

public class Person { 

    @SerializedName("name") 
    private String personName; 

    @SerializedName("bd") 
    private String birthDate; 

} 

Questa classe ha due campi che rappresentano il nome della persona e la data di nascita di una persona. Questi campi sono annotati con l'annotazione @SerializedName. Il parametro (valore) di questa annotazione è il nome da utilizzare quando gli oggetti serialising e deserialising. Ad esempio, il campo Java personName è rappresentato come nome in JSON.

JSON Esempio,

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

grazie mille per avermi risparmiato tempo –

+1

@MuhammadAli è il mio piacere di aiutarti. Puoi anche darmi credito con upvote e accettare la risposta mia cara :) –

+2

Elettori negativi, aggiungi il tuo commento in modo che possa capire qual è lo scopo del voto negativo e posso migliorare la mia risposta in poi .. :) –

4

ci sono già alcune risposte qui, ma vorrei aggiungere che se si utilizza ProGuard per offuscare il codice & non usano @SerializedName("name") nella classe del modello, allora il vostro GSON non funzionerà. Perché a causa dell'offuscamento, i nomi delle variabili potrebbero essere cambiati da String name a String a risultanti in analisi GSON interrotte poiché GSON cercherà la chiave & in errore &.

Specificando @SerializedName, GSON non cercherà in json in base al nome della variabile & verrà utilizzato solo specificato @SerializedName.

, naturalmente, si può dire Proguard per non offuscare il vostro modello, ma se si desidera avere il modello offuscato, quindi è necessario specificare @SerializedName