Que necesito para convertir una determinada cadena JSON a un objeto Java. Estoy usando Jackson para el manejo de JSON. No tengo control sobre la entrada de JSON (que he leído de un servicio web). Esta es mi entrada JSON:

{"wrapper":[{"id":"13","name":"Fred"}]}

Aquí es una vista simplificada de caso de uso:

private void tryReading() {
    String jsonStr = "{\"wrapper\"\:[{\"id\":\"13\",\"name\":\"Fred\"}]}";
    ObjectMapper mapper = new ObjectMapper();  
    Wrapper wrapper = null;
    try {
        wrapper = mapper.readValue(jsonStr , Wrapper.class);
    } catch (Exception e) {
        e.printStackTrace();
    }
    System.out.println("wrapper = " + wrapper);
}

Mi clase de entidad es:

public Class Student { 
    private String name;
    private String id;
    //getters & setters for name & id here
}

Mi clase de Contenedor es básicamente un contenedor de objeto de obtener mi lista de estudiantes:

public Class Wrapper {
    private List<Student> students;
    //getters & setters here
}

Sigo recibiendo este error y «contenedor» devuelve null. No estoy seguro de lo que falta. Alguien puede ayudarme por favor?

org.codehaus.jackson.map.exc.UnrecognizedPropertyException: 
    Unrecognized field "wrapper" (Class Wrapper), not marked as ignorable
 at [Source: java.io.[email protected]1; line: 1, column: 13] 
    (through reference chain: Wrapper["wrapper"])
 at org.codehaus.jackson.map.exc.UnrecognizedPropertyException
    .from(UnrecognizedPropertyException.java:53)
  • He encontrado esta útil para evitar la creación de una clase contenedora: Map dummy<String,Student> = myClientResponse.getEntity(new GenericType<Map<String, Student>>(){}); y, a continuación, Student myStudent = dummy.get("wrapper");
  • JSON deben parece: Cadena de jsonStr = «{\»estudiantes\»\:[{\»id\»:\»13\»,\»nombre de\»:\»Fred\»}]}»; si usted está esperando Contenedor de objeto en el RESTO solicitud POST
  • Relacionados (pero diferentes) pregunta: Ignorar nuevos campos en objetos JSON utilizando Jackson
  • Y por cierto, la mayoría de las respuestas a esta pregunta responder a una pregunta diferente, a saber, una similar a la que se linke arriba.
  • la mayoría de las respuestas de ayuda del pincel problema bajo la alfombra en lugar de resolverlo 🙁
  • Es divertido, así que ¿por qué tantas respuestas en esta pregunta responder a las cosas que no están relacionadas con las preguntas ? Al parecer , el OP no quiere ignorar deserialising el «contenedor» de la propiedad ……..
  • a veces sólo se puede arreglar lo que está bajo su control, y el resto se tiene que ignorar

InformationsquelleAutor jshree | 2010-12-20

35 Comentarios

  1. 883

    Puede utilizar Jackson nivel de clase de anotación:

    import com.fasterxml.jackson.annotation.JsonIgnoreProperties
    
    @JsonIgnoreProperties
    class { ... }

    Va a ignorar todas las propiedades que no se ha definido en su POJO. Muy útil cuando usted está buscando un par de propiedades en el JSON y no quiere escribir la totalidad de la asignación. Más info en Jackson sitio web. Si desea ignorar no declarado de la propiedad, usted debe escribir:

    @JsonIgnoreProperties(ignoreUnknown = true)
    • Ariel, ¿hay alguna manera de declarar este externos a la clase?
    • Todavía no he hecho, pero creo que usted puede conseguir en algún lugar en las anotaciones de procesamiento de código y agregar el comportamiento a través de programación, aunque no puedo pensar por qué te gustaría hacerlo. Me puedes dar un ejemplo?
    • Estoy serializar las clases que yo no tengo (no se puede modificar). En una opinión, me gustaría serializar con un cierto conjunto de campos. En otro punto de vista, quiero un conjunto diferente de los campos de serializada (o tal vez cambiar el nombre de las propiedades en el JSON).
    • debo añadir que necesita el (ignoreUnknown = true) cuando la anotación de su clase, de lo contrario no funcionará
    • Julián, esta no es la respuesta correcta a la pregunta del OP. Sin embargo, sospecho que la gente viene aquí porque google cómo ignorar las propiedades no definidas en POJO y este es el resultado de la primera, por lo que terminan arriba de votar este y Suresh la respuesta (eso es lo que me pasó a mí). Aunque la pregunta original no tiene nada que ver con el deseo de ignorar indefinido propiedades.
    • esta es una muy estúpido configuración predeterminada en mi humilde opinión, si usted agregar una propiedad a su api, toda la serialización de falla
    • Kogan, muchas Gracias por la respuesta. Me quedé con este error por mucho tiempo y la solución que funcionó para mí.
    • ¿Por qué esta respuesta tantas actualizaciones. Esto no soluciona el problema, simplemente lo ignora!!!
    • No entiendo la diferencia entre estos 2 sintaxis anterior – puede alguien explicar?
    • estas no son las 2 de la sintaxis, @JsonIgnoreProperties es la anotación y @JsonIgnoreProperties(ignoreUnknown = true) una posible forma de hacerlo. También puede especificar qué campos ignorar como se indica en Jackson documentación (por ejemplo,@JsonIgnoreProperties({ "extra", "uselessValue" }))
    • Llegué a este stackoverflow post porque de este mensaje de error en mongodb jackson biblioteca. En mi caso no tuve necesidad de agregar este @JsonIgnoreProperties anotación. Yo sólo estaba tratando de hacer «_id» propiedad trabajar aquí como se dice en jackson tutorial mongojack.org/tutorial.html, pero me coudn no. Desde @Objectd @JsonProperty("_id") public String getId(){return this._id} no trabajo, me tuve que reemplazarlo con @ObjectId @JsonProperty("_id") public String _id;. Ahora el error de tiempo de ejecución se ha ido y no estoy con @JsonIgnoreProperties. La versión 1.4.2
    • Votada abajo como que no responde a la OP de la pregunta. Ignorando propiedades desconocidas no resuelve su problema, pero lo deja con un Wrapper instancia en donde el students lista es null o vacío.
    • Si usted no desea que su aplicación para responder a desconocidos props defaultly por tirar un error 500 y barfing todos sus nombres de propiedad, entonces esto es la respuesta correcta. La verdad, no sé por qué la mayoría desea este comportamiento predeterminado.
    • Kogan ,entonces, ¿cómo se comportan con @ JsonIgnoreProperties, me parece que es aceptar a compilar
    • los valores predeterminados para false. Puede comprobar el documentación.
    • «Estoy serializar las clases que yo no tengo (no se puede modificar)» Se puede crear una clase que no hace otra cosa que extender la clase que usted quiere para deserializar, y poner el @JsonIgnoreProperties anotación no.

  2. 412

    Puede utilizar

    ObjectMapper objectMapper = getObjectMapper();
    objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

    Va a ignorar todas las propiedades que no son declaradas.

    • Esto no funciona para mí, todavía no se en propiedades desconocidas
    • Podría u por favor pegue al menos una pieza de código exactamente lo que u está haciendo, Usted podría haber perdido algo..ya Sea por hacer esto o mediante el uso de «@JsonIgnoreProperties(ignoreUnknown = true) » Tu problema debe ser resuelto. De todos modos buena suerte.
    • Puedo ejecutar este código: pastebin.com/rdBNezEn. Sin embargo, me he dado cuenta de que lo que esta pregunta es un poco diferente. Su respuesta es válida
    • FWIW, tenía que importar este ligeramente diferente enum: org.codehaus.jackson.mapa.DeserializationConfig.La característica.FAIL_ON_UNKNOWN_PROPERTIES
    • ^Arriba es para Jackson versiones anteriores a la 2
    • Obras de mí, gracias
    • Usted puede también de la cadena de estas llamadas como: getObjectMapper().deshabilitar(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
    • También trabajó para mí en Jackson 2.6.3
    • De hecho, esta es la mejor solución para esta cuestión.
    • Votada abajo como que no responde a la OP de la pregunta. Ignorando propiedades desconocidas no resuelve su problema, pero lo deja con un Contenedor instancia donde los estudiantes de la lista es nulo o vacío.
    • Esto funcionó para mí, gracias.

  3. 120

    La primera respuesta es casi correcta, pero lo que se necesita es cambiar de método getter, NO campo-campo es privado (y no detecta automáticamente); además, los captadores tienen prioridad sobre los campos si ambos son visibles.(Hay maneras de hacer que los campos privados visible, demasiado, pero si usted quiere tener getter no hay mucho punto)

    Así captador debe ser nombrado getWrapper(), o anotados con:

    @JsonProperty("wrapper")

    Si usted prefiere el método getter nombre como es.

    • Por favor, pon – que getter necesita ser cambiado o anotado?
    • que quieres decir con la anotación @JsonGetter(«contenedor»), a la derecha?
    • No, me refiero a @JsonProperty. Mientras @JsonGetter legal es un alias, rara vez se usa como @JsonProperty obras para getters, setters y los campos; los setters y getters se pueden distinguir por la firma (uno no tiene argumentos, devuelve no nulo; otros toma un argumento).
    • Esta es la respuesta que yo estaba buscando! Suena como Jackson tiene problemas de asignación de la fuente de JSON para su POJO, pero usted puede garantizar a los partidos mediante el etiquetado de los captadores. Gracias!
  4. 78

    el uso de Jackson 2.6.0, esto funcionó para mí:

    private static final ObjectMapper objectMapper = 
        new ObjectMapper()
            .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

    y con la configuración:

    @JsonIgnoreProperties(ignoreUnknown = true)
    • Con esa config anotación es innecesario
    • ¿Usted necesita para configurar ObjectMapper y Anotación en la clase? Supongo que objectMapper va a arreglar para todos, sin tener que anotar cada clase. Yo uso la anotación de embargo.
    • Usted no necesita los dos valores de la misma clase. También se pueden utilizar DI para obtener un mundial instancia singleton de la ObjectMapper, para establecer el FAIL_ON_UNKNOWN_PROPERTIES de la propiedad a nivel mundial.
    • Usted no necesita tanto, usted puede elegir uno o el otro.
  5. 49

    puede hacerse de 2 maneras:

    1. Marca el POJO ignorar propiedades desconocidas

      @JsonIgnoreProperties(ignoreUnknown = true)
    2. Configurar ObjectMapper que serializa/De-serializa el POJO/json como a continuación:

      ObjectMapper mapper =new ObjectMapper();            
      //for Jackson version 1.X        
      mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
      //for Jackson version 2.X
      mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) 
    • This debe ser aceptado como respuesta.
    • ¿Por qué debería ser aceptado respuesta? Esto le dice a ignorar propiedades desconocidas, mientras que la cuestión era encontrar una manera de conseguir el json envuelto en un objeto que esta solución claramente dice ignorar.
  6. 39

    Esta perfectamente trabajado para mí

    ObjectMapper objectMapper = new ObjectMapper();
    objectMapper.configure(
        DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);

    @JsonIgnoreProperties(ignoreUnknown = true) anotación no.

    • ¿Importa la correcta JsonIgnoreProperties?
    • Por lo que es, exactamente, el derecho de importación?
    • Votada abajo como que no responde a la OP de la pregunta. Ignorando propiedades desconocidas no resuelve su problema, pero lo deja con un Wrapper instancia donde los estudiantes de la lista es null o vacío.
  7. 35

    Esto funciona mejor que Todos por favor refiérase a esta propiedad.

    import com.fasterxml.jackson.databind.DeserializationFeature;
    import com.fasterxml.jackson.databind.ObjectMapper;
    
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        projectVO = objectMapper.readValue(yourjsonstring, Test.class);
    • Funciona como se esperaba!
    • Sí, este es el que resolvió mi problema – que coinciden con el título de este post.
    • Respuestas funcionan bien para mí y es muy fácil.Gracias
    • este trabajó como un encanto
  8. 26

    Si usted está usando Jackson 2.0

    ObjectMapper mapper = new ObjectMapper();
    mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
    • ¿por qué esta configuración no tiene ningún efecto sobre mí?
    • Depende de Jackson versión
  9. 18

    De acuerdo a la doc puede ignorar campos seleccionados o todos los uknown campos:

     //to prevent specified fields from being serialized or deserialized
     //(i.e. not include in JSON output; or being set even if they were included)
     @JsonIgnoreProperties({ "internalId", "secretKey" })
    
     //To ignore any unknown properties in JSON input without exception:
     @JsonIgnoreProperties(ignoreUnknown=true)
  10. 14

    A mí me funcionó con el siguiente código:

    ObjectMapper mapper =new ObjectMapper();    
    mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
  11. 12

    Jackson se queja porque no puede encontrar un campo en la clase de Contenedor que se llama «contenedor». Se hace así porque su objeto JSON tiene una propiedad llamada «contenedor».

    Creo que la solución es cambiar el nombre de la clase Contenedora del campo «contenedor» en lugar de «los estudiantes».

    • Gracias Jim. He intentado eso y no solucionar el problema. Me estoy preguntando si me falta alguna anotación..
    • Hmm, ¿qué sucede cuando se crea el equivalente de datos en Java y, a continuación, utilizar Jackson a escribe en JSON. La diferencia entre JSON y el JSON anterior debería ser una pista de lo que va mal.
    • Esta respuesta trabajado para mí, con el ejemplo de la pregunta.
  12. 12

    He probado el siguiente método y funciona para tales formato JSON lectura con Jackson.
    El uso de la ya propuesta de solución de: anotar getter @JsonProperty("wrapper")

    Su clase contenedora

    public Class Wrapper{ 
      private List<Student> students;
      //getters & setters here 
    } 

    Mi Sugerencia de clase contenedora

    public Class Wrapper{ 
    
      private StudentHelper students; 
    
      //getters & setters here 
      //Annotate getter
      @JsonProperty("wrapper")
      StudentHelper getStudents() {
        return students;
      }  
    } 
    
    
    public class StudentHelper {
    
      @JsonProperty("Student")
      public List<Student> students; 
    
      //CTOR, getters and setters
      //NOTE: If students is private annotate getter with the annotation @JsonProperty("Student")
    }

    Sin embargo, ello dará la salida del formato:

    {"wrapper":{"student":[{"id":13,"name":Fred}]}}

    También para obtener más información, consulte https://github.com/FasterXML/jackson-annotations

    Espero que esto ayude

    • Bienvenido a stackoverflow. Sugerencia, puede utilizar el {} símbolos en la barra de herramientas de formato de los fragmentos de código.
  13. 10

    Esta solución es genérica al leer json arroyos y la necesidad de obtener sólo algunos de los campos, mientras que los campos no se asignan correctamente en sus Clases de Dominio puede ser ignorado:

    import org.codehaus.jackson.annotate.JsonIgnoreProperties;
    @JsonIgnoreProperties(ignoreUnknown = true)

    Una solución sería el uso de una herramienta como jsonschema2pojo para autogenerar el Dominio necesario de las Clases como Estudiante a partir del Esquema de la Respuesta en json. Usted puede hacer esto último por cualquier línea de json esquema del convertidor.

  14. 9

    Anotar el campo de los estudiantes como de abajo, ya que hay falta de coincidencia en los nombres de json de la propiedad y de propiedad java

    public Class Wrapper {
        @JsonProperty("wrapper")
        private List<Student> students;
        //getters & setters here
    }
  15. 8

    Como nadie lo ha mencionado, pensaba que iba a…

    Problema es de su propiedad, en su JSON es llamado «contenedor» y de su propiedad en Wrapper.class se llama «los estudiantes».

    Por lo que sea…

    1. Corregir el nombre de la propiedad, ya sea en la clase o JSON.
    2. Anotar su propiedad variable como por StaxMan comentario.
    3. Anotar el setter (si tiene uno)
  16. 5

    Cambiar

    public Class Wrapper {
        private List<Student> students;
        //getters & setters here
    }

    a

    public Class Wrapper {
        private List<Student> wrapper;
        //getters & setters here
    }

    —- o —-

    Cambiar su cadena JSON a

    {"students":[{"id":"13","name":"Fred"}]}
  17. 5

    Su entrada

    {"wrapper":[{"id":"13","name":"Fred"}]}

    indica que es un Objeto, con un campo llamado «contenedor», que es una Colección de los Estudiantes. Así que mi recomendación sería,

    Wrapper = mapper.readValue(jsonStr , Wrapper.class);

    donde Wrapper se define como

    class Wrapper {
        List<Student> wrapper;
    }
  18. 4

    Lo que funcionó para mí, era hacer que la propiedad pública. Resolvió el problema para mí.

  19. 4

    Por mi parte, la única línea de

    @JsonIgnoreProperties(ignoreUnknown = true)

    no trabajar demasiado.

    Acaba de agregar

    @JsonInclude(Include.NON_EMPTY)

    Jackson 2.4.0

  20. 4

    Este a mi me funciono perfectamente

    objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
  21. 4

    He arreglado este problema, simplemente cambiando las firmas de mi setter y getter métodos de mi clase POJO. Todo lo que tenía que hacer era cambiar el getObject método para que coincida con lo que el asignador estaba buscando. En mi caso he tenido un getImageUrl originalmente, pero los datos JSON había image_url que estaba lanzando el asignador de apagado. He cambiado tanto mi setter y getters para getImage_url y setImage_url.

    Espero que esto ayude.

    • tienes razón al parecer: si el nombre que desea es xxx_yyy La forma de llamar sería getXxx_yyy y setXxx_yyy. Esto es muy extraño, pero funciona.
  22. 4

    La nueva base avanzada de Android introdujo algunos cambios importantes ; por debajo de la copia de la doc :

    [https://firebase.google.com/support/guides/firebase-android%5D :

    Actualización de Java los objetos del modelo de

    Como con el 2.x SDK, base avanzada de la Base de datos de forma automática convertir objetos Java que se pase a DatabaseReference.setValue() en JSON y puede leer JSON en Java los objetos utilizando DataSnapshot.getValue().

    En el nuevo SDK, cuando la lectura de JSON en un objeto Java con DataSnapshot.getValue(), propiedades desconocidas en el JSON que ahora son ignorados por defecto, de modo que ya no necesita @JsonIgnoreExtraProperties(ignoreUnknown=true).

    Para excluir a los campos de captadores cuando la escritura de un objeto de Java para JSON, la anotación que ahora se llama @Exclude en lugar de @JsonIgnore.

    BEFORE
    
    @JsonIgnoreExtraProperties(ignoreUnknown=true)
    public class ChatMessage {
       public String name;
       public String message;
       @JsonIgnore
       public String ignoreThisField;
    }
    
    dataSnapshot.getValue(ChatMessage.class)

    AFTER
    
    public class ChatMessage {
       public String name;
       public String message;
       @Exclude
       public String ignoreThisField;
    }
    
    dataSnapshot.getValue(ChatMessage.class)

    Si hay una propiedad adicional en su JSON que no está en su clase de Java, verá este mensaje de advertencia en los archivos de registro:

    W/ClassMapper: No setter/field for ignoreThisProperty found on class com.firebase.migrationguide.ChatMessage

    Usted puede deshacerse de esta advertencia por poner un @IgnoreExtraProperties anotación en su clase. Si desea base avanzada de la Base de datos a comportarse como lo hizo en el 2.x SDK y lanzar una excepción si hay propiedades desconocidas, usted puede poner una @ThrowOnExtraProperties anotación en su clase.

  23. 3

    El POJO debe ser definido como

    Clase de respuesta

    public class Response {
        private List<Wrapper> wrappers;
        //getter and setter
    }

    Clase contenedora

    public class Wrapper {
        private String id;
        private String name;
        //getters and setters
    }

    y mapper para leer el valor

    Response response = mapper.readValue(jsonStr , Response.class);
    • Casi. No wrappers, pero wrapper.
    • Jaja, gracias por la captura de los errores. Yo, naturalmente, el uso del plural para una colección. Pero por el OP de la pregunta, debe ser singular.
  24. 3

    conjunto público sus campos de clase no privado.

    public Class Student { 
        public String name;
        public String id;
        //getters & setters for name & id here
    }
    • baja la práctica de esta forma se rompe la encapsulación.
    • pero funciona…
    • He oído que.
    • Su clase está en riesgo cuando el usuario lo utiliza porque el estado interno podría ser mutado a través de estos campos.
  25. 3

    Otra posibilidad es esta propiedad en la aplicación.propiedades
    spring.jackson.deserialization.fail-on-unknown-properties=false, que no necesita ningún otro cambio de código en su aplicación. Y cuando usted cree que el contrato es estable, puede quitar esta propiedad o marca es cierto.

  26. 2

    Esto puede ser una respuesta tardía, pero simplemente cambiando el POJO a esto debería resolver la cadena json proporcionados en el problema (ya que, la cadena de entrada no está en su control como se dijo):

    public class Wrapper {
        private List<Student> wrapper;
        //getters & setters here
    }
  27. 2

    Google me trajo aquí y me sorprendí al ver las respuestas… todas sugirió evitando el error ( que siempre muerde atrás 4 pliegues más adelante en el desarrollo ) en lugar de la solución hasta este caballero restaurado mediante la fe en LO!

    objectMapper.readValue(responseBody, TargetClass.class)

    se utiliza para convertir una Cadena json a un objeto de la clase, cuál es el que falta es que el TargetClass deben tener público getter /settros. Misma falta en el OP pregunta del fragmento demasiado! 🙂

    a través de lombok su clase como a continuación debe trabajar!!

    @Data
    @Builder
    public class TargetClass {
        private String a;
    }
  28. 2

    Este no puede ser el mismo problema que el OP, pero en caso de que alguien llegó aquí con el mismo error que yo tenía entonces, esto les ayuda a resolver su problema. Tengo el mismo error como el OP cuando he utilizado un ObjectMapper de otra dependencia como la JsonProperty anotación.

    Esto funciona:

    import com.fasterxml.jackson.databind.ObjectMapper;
    import com.fasterxml.jackson.annotation.JsonProperty;

    NO funciona:

    import org.codehaus.jackson.map.ObjectMapper; //org.codehaus.jackson:jackson-mapper-asl:1.8.8
    import com.fasterxml.jackson.annotation.JsonProperty; //com.fasterxml.jackson.core:jackson-databind:2.2.3
    • gracias! import com.fasterxml.jackson.la anotación.JsonProperty trabajado para mí en lugar de a la otra:-)
  29. 1

    En mi caso fue simple: el RESTO-servicio Objeto JSON fue actualizado (una propiedad que fue agregado), pero el RESTO-cliente Objeto JSON no estaba. Tan pronto como he actualizado JSON de objetos de cliente de la ‘no Reconocido de campo …’ excepción se ha desvanecido.

    • Este debe ser un comentario
  30. 0

    Sólo debe cambiar el campo de la Lista de «los estudiantes» a «contenedor» sólo el archivo json y el mapeador va a mirar hacia arriba.

  31. 0

    Su cadena json no está en línea con el mapeado de la clase.
    Cambiar la cadena de entrada

    String jsonStr = "{\"students\"\:[{\"id\":\"13\",\"name\":\"Fred\"}]}";

    O cambiar su clase asignada

    public class Wrapper {
        private List<Student> wrapper;
        //getters & setters here
    }
  32. 0

    En mi caso el error vino debido a la siguiente razón

    • Inicialmente estaba trabajando bien,luego he cambiado el nombre de una variable,hizo la
      los cambios en el código y me dio este error.

    • Luego he aplicado jackson ignorante de la propiedad también, pero no funcionó.

    • Finalmente, después de volver a definir mi getters y setters métodos de acuerdo a
      nombre de mi variable de este error fue resuelto

    Así que asegúrese de redifine getters y setters también.

  33. 0

    Cambio de clase de Contenedor para

    public Class Wrapper {
    
              @JsonProperty("wrapper")  //add this line
              private List<Student> students;
    }

    Lo que esto hace es reconocer la students campo como wrapper clave del objeto json.

    También yo, personalmente, prefiero usar Lombok Anotaciones para Getters y Setters como

    @Getter
    @Setter
    public Class Wrapper {
    
              @JsonProperty("wrapper")  //add this line
              private List<Student> students;
    }

    Ya que no he probado el código anterior con Lombok y @JsonProperty juntos, yo voy a sugerir que usted agregue el código siguiente a la clase de Contenedor, así reemplazar Lombok defecto getter y setter.

    public List<Student> getWrapper(){
         return students;
    }
    
    public void setWrapper(List<Student> students){
         this.students = students;
    }

    También comprobar este a deserialise listas con Jackson.

  34. 0

    import com.fasterxml.jackson.la anotación.JsonIgnoreProperties;

    @JsonIgnoreProperties

  35. -1

    Usted necesita para comprobar que todos los campos de la clase va a analizar en, hacer lo mismo que en el original JSONObject. Me ayudó y en mi caso.

    @JsonIgnoreProperties(ignoreUnknown = true) no ayuda en absoluto.

    • no ayuda? a qué te refieres? @JsonIgnoreProperties(ignoreUnknown = true) definitivamente ignora las propiedades que no están definidos en el objeto de java, pero que están presentes en JSON

Dejar respuesta

Please enter your comment!
Please enter your name here