2014-06-20 12 views
12

Quindi sto lavorando con l'aggiornamento con un'API che ha una variabile chiamata "pubblico". Come farei per farlo mappare automaticamente come fanno tutte le altre variabili.Modifica della variabile json della mappa di adattamento alla parola chiave

Esempio:

@GET("/?filter=my_images") 
void getMyImages(
     @Query("client_id") String id, 
     @Query("api_key") String key, 
     Callback<ImageList> callback 
); 
public static class Image{ 
    int id; 
    String name; 
    String distribution; 
    String slug; 
    // Can't do this: 
    boolean public; 
} 

public static class ImageList{ 
    String status; 
    List<Image> images; 
} 

risultati Esempio API (JSON):

{ 
    "status": "OK", 
    "images": [ 
    { 
     "id": 1, 
     "name": "My first snapshot", 
     "distribution": "Ubuntu", 
     "slug": "ubuntu-12.10-x32", 
     "public": true 
    }, 
    { 
     "id": 2, 
     "name": "Automated Backup", 
     "distribution": "Ubuntu" 
    } 
    ] 
} 

risposta

35

retrofit utilizza GSON per la serializzazione da e JSON.

Gson fornisce un'annotazione @SerializedName per modificare la chiave a cui è associato un campo o un metodo. È possibile utilizzare questo per la gestione della tua parola riservata:

@SerializedName("public") 
public String isPublic; 
+0

Ha funzionato come un fascino. Sono nuovo nel trattare con le annotazioni, quindi ho dimenticato di dare un'occhiata a cose del genere. Questo aiuterà anche a sbarazzarsi di quelle brutte variabili non standard con underscore. – JaySee

+0

@JaySee potresti anche dare un'occhiata alle opzioni 'setFieldNamingPolicy' /' setFieldNamingStrategy' quando crei il tuo 'GsonConverter' - questi possono essere usati per mappare automaticamente il JSON sottovalutato ai nomi delle proprietà dei cammelli (e viceversa) – swanson

+0

Ciao Jake, qualcuno di Square può dare qualche suggerimento su questa domanda: http://stackoverflow.com/questions/24467416/retrofit-cache-control-never-included-in-response? – zatziky

0

Si prega di guardare questo link, che è una soluzione più ordinata se ci sono sottolineature di ciascun tasto.

Problemi correlati