2015-10-31 11 views
9

Dire che ho un oggetto:Java - Alias ​​per nomi di campo

Object A 
    String field1 = "abc"; 
    String field2 = "xyz"; 

JSON per quanto sopra è:

{ 
    "ObjectA": { 
     "field1": "abc", 
     "field2": "xyz" 
    } 
} 

stavo cercando di creare un nuovo ID per i nomi dei campi prima di inviare il json. Per esempio. "campo1" da chiamare "f1" e "campo2" da chiamare "f2". Quindi l'output previsto json è mostrato di seguito:

{ 
    "ObjectA": { 
     "f1": "abc", 
     "f2": "xyz" 
    } 
} 

Non sono sicuro di come farlo. Quanto sopra può essere fatto in modo pulito? Grazie per il tuo aiuto e i tuoi suggerimenti.

Sto usando gson.

+1

Sembra che annotare i campi con '@ SerializedName' potrebbe fare il trucco ([collegamento alla documentazione] (https://sites.google.com/site/gson/gson-user-guide#TOC-JSON-Field- Naming-Support)). –

+1

Grazie a @Mick. Ho guardato l'esempio e dovrebbe funzionare. – userDSSR

risposta

17

Utilizzare l'annotazione @SerializedName("name") sui campi. In questo modo:

Object A 
    @SerializedName("f1") 
    String field1 = "abc"; 
    @SerializedName("f2") 
    String field2 = "xyz"; 

Vedere https://google.github.io/gson/apidocs/com/google/gson/annotations/SerializedName.html.

+0

Grazie a @Jesper, per l'aiuto. Questo dovrebbe funzionare per me. – userDSSR

+0

Sebbene quanto sopra funzioni - @Jesper. Ho molte classi e molti campi. Ex. "campo1" molti appaiono in più classi. Nel metodo sopra, dovrei andare in ogni classe e aggiungere '@SerializedName ("f1")' a ogni 'String field1'. Potrebbe diventare un problema di manutenzione. C'è un modo per mantenere gli alias, ad es. "campo1 = f1" in una classe alias e chiamarlo durante la serializzazione. Solo un pensiero. – userDSSR

+0

Volevo solo chiudere questo problema. Il modo migliore che ho trovato - era definire una classe costante - con le definizioni. Le costanti possono essere quindi utilizzate nelle annotazioni. Se la definizione delle costanti viene modificata, si riflette su tutte le annotazioni che utilizzano quella costante. – userDSSR

Problemi correlati