Jackson supera los subrayados a favor del caso camello
Recupero una cadena JSON de Internet; Como la mayoría de JSON que he visto, incluye claves largas separadas por guiones bajos. Esencialmente, mi objetivo es deserializar JSON en objetos java, pero no uso guiones bajos en el código java.
Por ejemplo, podría tener una User
clase con firstName
campo en camel-case, simultáneamente necesito decirle de alguna manera a Jackson que asigne first_name
la clave de JSON al firstName
campo de clase. ¿Es posible?
class User{
protected String firstName;
protected String getFirstName(){return firstName;}
}
En Jackson 2.12+, puede configurar ObjectMapper
para convertir mayúsculas y minúsculas en nombres con un guión bajo:
objectMapper.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE);
O anotar una clase de modelo específica con esta anotación:
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class;)
Antes de Jackson 2.7, la constante se llamaba:
PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES
Si es una aplicación de arranque de primavera, en el archivo application.properties, simplemente use
spring.jackson.property-naming-strategy=SNAKE_CASE
O anotar la clase de modelo con esta anotación.
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.clase)
Debe utilizar @JsonProperty
en el campo en el que desea cambiar la asignación de nombre predeterminada.
class User{
@JsonProperty("first_name")
protected String firstName;
protected String getFirstName(){return firstName;}
}
Para más información: la API