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

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top