Soy nuevo con Java y objectMapper. Estoy tratando de analizar JSON campo que es posible que una clave tiene dos tipos, que podría ser una cadena o matriz.
ejemplos:
{
"addresses": [],
"full_name": [
"test name_1",
"test name_2"
],
}
o
{
{
"addresses": [],
"full_name": "test name_3",
}
}
ejemplo Clase:
@JsonIgnoreProperties(ignoreUnknown = true)
@Data -> lombok.Data
public class Document {
private List<String> addresses;
@JsonProperty("full_name")
private String fullName;
}
Solía objectMapper deserializar JSON, que funciona correctamente cuando el campo 'FULL_NAME' tiene una cadena pero cuando llega una matriz falle deserialización.
La idea es que cuando llegue un valor de cadena de venta en el atributo pero cuando llegue matriz, concatenar de elementos de la matriz como de cadena (string.join ( "", valor))
Es posible aplicar deserialización personalizado en un método de la clase? Por ejemplo setFullName () (uso lombok.Data)
Vi otros ejemplos en este sitio, pero no el trabajo.
Gracias por todo
De Jackson 2.6 se puede utilizar JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY
@JsonProperty("full_name")
@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
private String[] fullName;