es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo configurar la convención de nombres de getter y setter en Jackson para una clase específica?

Hay una clase con nombres personalizados de getters y setters. Aquí no tienen el prefijo “get” o “set”.

Esta configuración especial es necesaria solo para una clase, no globalmente.

Veo una discusión en el hilo de desarrollo de Jackson mencionando la anotación @JsonPOJO exactamente para este propósito,
pero no la encuentro en la última versión (v2.13) de Jackson.
– https://github.com/FasterXML/jackson-databind/issues/2674,
– https://github.com/FasterXML/jackson-databind/issues/1325

¿Cómo expresar la intención “usar setters con nombres exactamente iguales a los campos en JSON”?

Lo mismo que lo siguiente, pero de una manera más concisa sin poner @JsonProperty o @JsonSetter para cada setter:

class MyModel{
  private String first;
  private int second;

  public String first(){
    return this.first;
  }

  @JsonProperty("first")
  public void first(String value){
    this.first = value;
  }

  public int second(){
    return this.second;
  }

  @JsonProperty("second")
  public void second(int value){
    this.second = value;
  }
}
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Lamentablemente, actualmente no hay una forma concisa de expresar la intención de usar setters con nombres exactamente iguales a los campos en JSON sin poner @JsonProperty o @JsonSetter para cada setter. La anotación @JsonPOJO mencionada no está disponible en la última versión de Jackson. La única opción es utilizar anotaciones en cada setter individual o utilizar una estrategia de nomenclatura personalizada para asignar campos JSON a los métodos setters.

Comments are closed.