¿Cómo puedo serializar este JSON utilizando anotaciones Jackson?
-
08-10-2019 - |
Pregunta
tengo el JSON siguiente:
{
fields : {
"foo" : "foovalue",
"bar" : "barvalue"
}
}
Me escribió un POJO de la siguiente manera:
public class MyPojo {
@JsonProperty("fields")
private List<Field> fields;
static class Field {
@JsonProperty("foo") private String foo;
@JsonProperty("bar") private String bar;
//Getters and setters for those 2
}
Esta falla obviamente, porque mi campo JSON "campos" es un HashMap, y no una lista.
Mi pregunta es: ¿hay alguna anotación "mágica" que puede hacer que Jackson reconoce las teclas mapa como nombres de propiedades POJO, y asignar los valores de mapa a los valores de las propiedades POJO
P.S .: Realmente no quiero tener mis campos de objeto como ...
private Map<String, String> fields;
... porque en mi JSON-mundo real que tengo objetos complejos en los valores de mapa, no sólo cadenas ...
Gracias; -)
Philippe
Solución
Ok, para que JSON, usted acaba de modificar ligeramente ejemplo, como:
public class MyPojo {
public Fields fields;
}
public class Fields {
public String foo;
public String bar;
}
puesto que la estructura de las necesidades de objetos para alinear con la estructura de JSON. Se podría utilizar setters y getters en lugar de campos públicos de golf (y constructores incluso en lugar de los que elaboran o campos), esto es sólo el ejemplo más simple.
Su clase original produciría / JSON consumir más como:
{
"fields" : [
{
"foo" : "foovalue",
"bar" : "barvalue"
}
]
}
Dado que las listas se asignan a los arrays JSON.