Jackson Flashcards
Para que sirve la dependencia Jackson-Databinding
Es la dependencia que necesitamos si queremos serializar objetos JSON a Java y de Java a JSON, las dependencias que debemos usar son las que vienen del paquete FasterXML
Si queremos mapear un objeto Json a una clase Java sin hacer ninguna modificacion en nombres que debemos de hacer
Debemos crear la clase con las siguientes caracteristicas:
- Crear variables de instancias(Los nombres deben de ser iguales que a los del objeto JSON para no hacer ninguna configuracion extra)
- Crear metodos getter and setters
- Opcionalmente podemos sobreescribir el metodo toString para obtener la representacion del objeto en java
Como se pasamos un objeto java a un objeto JSON
Creamos una intancia del objeto ObjectMapper
Una vez creado el objeto, utilizamos el metodo om.writeValue y le pasamos el archivo en donde queremos escribir el JSON y el objeto que queremos mapear
Ejemplo:
Person jesus = new Person(30, “Jesus”);
ObjectMapper om = new ObjectMapper();
om.writeValue(new File(“nameOfFileWherwWrite.json”), jesus);
Esto hara un hara un archivo llamado nameOfFileWherwWrite.json en donde estara la representacion json de nuestro objeto jesus
Como se pasamos un objeto JSON a un objeto java
Primero tenemos que crear una instancia del tipo ObjectMapper y despues utilizar el metodo llamado readValue y le pasamos el archivo de donde vamos a leer y la clase que representara a ese archivo, ejemplo:
ObjectMapper om = new ObjectMapper();
om.readValue(new File(“patient.json”), Patient.class);
Es importante mencionar que cuando usamos el metodo readValue, debemos de especificar el nombre de la clase con terminacion .class en lugar de un objeto a diferencia de cuando usamos writeValue que le pasamos el objeto
Cuales son las anotaciones que aplican tanto para leer o para escribir JSON to JAVA o JAVA to JSON (readValue o writeValue)
@JsonIgnore: nos sirve para excluir una propiedad en especifico de ser incluida en cualquier tipo de trasformacion(JAVA-JSON o JSON-JAVA) y se usa a nivel variable de instancia
Ejemplo de uso:
@JsonIgnore
private String name; //En este caso name no va a ser serializado
@JsonIgnoreProperties: nos sirve excluir un set de propiedades en cualquier tipo de trasformacion(JAVA-JSON o JSON-JAVA), se usa a nivel de clase, ejemplo:
@JsonIgnoreProperties({“name”, “lastName”, “Age”})
public class Patient
.
.
more instance variables
.
.
Cuales son las anotaciones que aplican solo para lectura(readValue)
@JsonSetter
Cuando no se llaman igual los objetos dej JSON a las propiedades del objeto Java, podemos especificar en el setter de la propiedad java el nombre con el cual se debe matchear en el JSON, supongamos que en el JSON se llama la propiedad fullName y en llava full_name, lo que tenemos que hacer es lo siguiente
@JsonSetter(“fullName”) //Asi se la encontramos en el JSON
private void full_name(String full_name){ //Asi la encontramos en Java
….
}
Cuales son las anotaciones que aplican solo para escritura (writeValue)
@JsonInclude: se utiliza para incluir una o muchas propiedades dada una condicion, por ejemplo NON_EMPTY, se usa a nivel de clase y si cumple la propiedad incluira la propiedad en el JSON que escribira, de lo contrario no estara presente esta propiedad propiedad
@JsonPropertyOrder: define el orden en que se deben de escribir las propiedades de en el Json, se utiliza a nivel de clase
Ejemplo de ambas anotaciones:
@JsonInclude(JsonInclude.NON_EMPTY)
@JsonPropertyOrder({“PropTen”, “PropNine”, PropEight, … ,PropOne})//En orden decendente
public class Patient{
.
.
.
}
Que necesitamos para leer (readValue) desde un archivo JSON
Es requerido un contructor default, si utilizamos objetos anidados debemos especificarle tambien un constructor default, este caso ocurre cuando tenemos un constructor customizado y no ponemos el default, nos mandara un error de que necesitamos uno default