java - jsonproperty - jackson rename property
Cambiar el nombre del campo en JSON usando Jackson (3)
Estoy usando jackson para convertir un objeto mío en json. El objeto tiene 2 campos:
@Entity
public class City {
@id
Long id;
String name;
public String getName() { return name; }
public void setName(String name){ this.name = name; }
public Long getId() { return id; }
public void setName(Long id){ this.id = id; }
}
Como quiero usar esto con la función de autocompletar jQuery, quiero que ''id'' aparezca como ''valor'' en el json y ''nombre'' para que aparezca como ''etiqueta''. La documentación de jackson no está clara en esto y he intentado cada anotación que incluso remotamente parece que hace lo que necesito pero no puedo hacer que el name
aparezca como label
e id
para que aparezca como value
en el json.
¿Alguien sabe cómo hacer esto o si esto es posible?
¿Has probado con @JsonProperty?
@Entity
public class City {
@id
Long id;
String name;
@JsonProperty("label")
public String getName() { return name; }
public void setName(String name){ this.name = name; }
@JsonProperty("value")
public Long getId() { return id; }
public void setId(Long id){ this.id = id; }
}
Hay una opción más para cambiar el nombre del campo:
Es útil si trabajas con clases de terceros, que no puedes anotar , o simplemente no quieres contaminar la clase con anotaciones específicas de Jackson.
Tenga en cuenta que hay org.codehaus.jackson.annotate.JsonProperty
en Jackson 1.x y com.fasterxml.jackson.annotation.JsonProperty
en Jackson 2.x. Compruebe qué ObjectMapper está utilizando (desde qué versión) y asegúrese de utilizar la anotación adecuada.