¿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;
}
}
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.