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 json y 'nombre' aparezca como 'etiqueta'. La documentación de Jackson no está claro en esto y lo he intentado cada anotación que ni remotamente parece que hace lo que necesito, pero no puedo conseguir namea aparecer como labely idpara que aparezca como valueen el JSON.
¿Alguien sabe cómo hacer esto o si esto es posible?

Respuestas:
¿Has intentado usar @JsonProperty?
fuente
@JsonProperty(value="label")y no estaba funcionando, lo he intentado como me lo sugirió y funciona. gracias hombre, esto realmente ayudará a simplificar el código ahora.Tenga en cuenta que hay
org.codehaus.jackson.annotate.JsonPropertyen Jackson 1.xycom.fasterxml.jackson.annotation.JsonPropertyJackson 2.x. Comprueba qué ObjectMapper estás usando (de qué versión) y asegúrate de usar la anotación adecuada.fuente
org.json4s.jacksonespacio de nombres. :) y posiblemente otra implementación dejacksonYMMV.Hay una opción más para cambiar el nombre del campo:
Jackson MixIns .
Es útil si trata con clases de terceros, que no puede anotar , o simplemente no desea contaminar la clase con anotaciones específicas de Jackson.
La documentación de Jackson para Mixins está desactualizada, por lo que este ejemplo puede proporcionar más claridad. En esencia: crea una clase mixin que realiza la serialización de la manera que desee. Luego regístralo en ObjectMapper:
fuente
Jackson
Si está usando Jackson, puede usar la
@JsonPropertyanotación para personalizar el nombre de una propiedad JSON dada.Por lo tanto, solo tiene que anotar los campos de entidad con la
@JsonPropertyanotación y proporcionar un nombre de propiedad JSON personalizado, como este:JavaEE o JakartaEE JSON-B
JSON-B es la capa de enlace estándar para convertir objetos Java hacia y desde JSON. Si está utilizando JSON-B, puede anular el nombre de la propiedad JSON mediante la
@JsonbPropertyanotación:fuente