Estou usando jackson para converter um objeto meu em json. O objeto possui 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 eu quero usar isso com o recurso de preenchimento automático do jQuery, quero que 'id' apareça como 'valor' no json e 'name' apareça como 'label'. A documentação de jackson não é clara sobre isso e eu tentei todas as anotações que remotamente parecem fazer o que eu preciso, mas não consigo name
aparecer como label
e id
aparecer value
no json.
Alguém sabe como fazer isso ou se isso é possível?
Respostas:
Você já tentou usar o @JsonProperty?
fonte
@JsonProperty(value="label")
e não estava funcionando, tentei como você sugeriu e funciona! graças cara isso realmente ajudará a simplificar o código agora.Esteja ciente de que existe
org.codehaus.jackson.annotate.JsonProperty
no Jackson 1.xecom.fasterxml.jackson.annotation.JsonProperty
no Jackson 2.x. Verifique qual ObjectMapper você está usando (de qual versão) e certifique-se de usar a anotação adequada.fonte
org.json4s.jackson
espaço para nome. :) e possivelmente outra implementação dojackson
YMMV.Há mais uma opção para renomear o campo:
Jackson MixIns .
Útil se você lida com classes de terceiros, que você não pode anotar , ou simplesmente não deseja poluir a classe com anotações específicas de Jackson.
A documentação de Jackson para Mixins está desatualizada, portanto, este exemplo pode fornecer mais clareza. Em essência: você cria uma classe mixin que faz a serialização da maneira que desejar. Em seguida, registre-o no ObjectMapper:
fonte
Jackson
Se você estiver usando Jackson, poderá usar a
@JsonProperty
anotação para personalizar o nome de uma determinada propriedade JSON.Portanto, você só precisa anotar os campos da entidade com a
@JsonProperty
anotação e fornecer um nome de propriedade JSON personalizado, como este:JavaEE ou JakartaEE JSON-B
JSON-B é a camada de ligação padrão para converter objetos Java de e para JSON. Se você estiver usando JSON-B, poderá substituir o nome da propriedade JSON através da
@JsonbProperty
anotação:fonte