Cambiar el nombre del campo en JSON usando Jackson
Estoy usando Jackson para convertir un objeto mío a 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; }
}
Ya que quiero usar esto con la función de autocompletar de jQuery, quiero que 'id' aparezca como 'value' en el json y 'name' aparezca como 'label'. La documentación de Jackson no es clara en esto y he intentado cada anotación que incluso remotamente parece que hace lo que necesito, pero no puedo conseguir name
para aparecer como label
y id
para aparecer como value
en el json.
¿alguien sabe cómo hacer esto o si esto es posible?
3 answers
¿Has intentado usar @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; }
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-09 10:32:09
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 usar la anotación adecuada.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-22 09:13:42
Hay una opción más para cambiar el nombre del campo:
Útil si se trata de clases de terceros, que no puede anotar, o simplemente no desea contaminar la clase con anotaciones específicas de Jackson.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-22 04:11:48