2011-10-25 10 views
11

Sto utilizzando MappingJacksonJsonView per serializzare su JSON una classe, tuttavia, mi piacerebbe poter rinominare alcuni campi del nome predefinito in base al nome getter.Rinomina campi JSON utilizzati da MappingJacksonJsonView in primavera

Questo perché devo inviare nomi di campi come "delete_url" e "delete_type" per il caricamento di file jQuery. Sto usando @Jsonserialize annotation per selezionare i campi da serializzare.

@JsonAutoDetect(getterVisibility = Visibility.NONE) 
public interface Picture { 

    @JsonSerialize 
    String getName(); 

    @JsonSerialize 
    String getDelete_url(); 

    ... 

Per esempio, sono costretto a chiamare un metodo getDelete_url(), mentre mi piacerebbe chiamarlo getDeleteUrl(), ma ancora uscita la chiave "delete_url" durante la serializzazione a JSON.

risposta

22

Dovresti essere in grado di qualificarti utilizzando @JsonProperty.

@JsonAutoDetect(getterVisibility = Visibility.NONE) 
public interface Picture { 

    @JsonSerialize 
    @JsonProperty("name") 
    String getName(); 

    @JsonSerialize 
    @JsonProperty("delete_url") 
    String getDeleteUrl(); 

    //... 
+0

Sto creando un servizio Web utilizzando Spring MVC, che restituisce semplicemente json reposne. Questo non sta funzionando nel mio caso. Sta prendendo solo il nome del campo. – Badal

8

Hai provato a utilizzare l'annotazione @JsonProperty?

"Definisce il nome della proprietà logica, ad esempio il nome del campo oggetto Json da utilizzare per la proprietà: se String vuota (che è l'impostazione predefinita), utilizzerà il nome del campo annotato."