2011-10-25 32 views
11

Estoy usando MappingJacksonJsonView para serializar en clase JSON, sin embargo, me gustaría poder cambiar el nombre de algunos de los campos del nombre predeterminado basado en el nombre del getter.Cambiar el nombre de los campos JSON utilizados por MappingJacksonJsonView en Spring

Esto se debe a que tengo que mostrar los nombres de campo como "delete_url" y "delete_type" para la carga de archivos jQuery. Estoy usando la anotación @Jsonserialize para seleccionar manualmente los campos para serializar.

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

    @JsonSerialize 
    String getName(); 

    @JsonSerialize 
    String getDelete_url(); 

    ... 

Por ejemplo, yo estoy obligado a llamar a un método getDelete_url(), mientras que me gustaría llamarlo getDeleteUrl(), pero sigue siendo la clave de salida "delete_url" al serializar a JSON.

Respuesta

22

Debe ser capaz de calificar usando @JsonProperty.

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

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

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

    //... 
+0

Estoy creando un servicio web utilizando Spring MVC, que simplemente devuelve json reposne. Esto no está funcionando en mi caso. Está tomando el nombre del campo solamente. – Badal

8

¿Ha intentado utilizar la anotación @JsonProperty?

"Define el nombre de la propiedad lógica, es decir, el nombre del campo del objeto Json para usar para la propiedad: si Empty String (que es el valor predeterminado), usará el nombre del campo anotado."

Cuestiones relacionadas