Cómo analizar campo que puede ser una cadena y puede ser una matriz con Jackson

Diego Sanz :

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

Consorcio inactivo :

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;

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=197464&siteId=1
Recomendado
Clasificación