En este tutorial se explica de forma simple como utilizar Jackson 2.x para transformar objetos Java a Json y viceversa .
1. Configuración
Para utilizar Jackson 2.x es necesario agregar la siguiente dependencia a nuestro archivo pom.xml:
- jackson-databind
- jackson-core (incluida en jackson-databind)
- jackson-annotations (incluida en jackson-databind)
com.fasterxml.jackson.core jackson-databind 2.8.1
2. Creando objeto a transformar de Java a JSON
El objetivo de Jackson 2.x es transformar un objeto java a JSON y un JSON a objetos Java, para hacer esto el primer paso es crear un POJO(Plain Old Java Object) .
/** * */ package com.raidentrance.pojo; /** * @author raidentrance * */ public class User { private Integer idUser; private String username; private String password; public Integer getIdUser() { return idUser; } public void setIdUser(Integer idUser) { this.idUser = idUser; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "User [idUser=" + idUser + ", username=" + username + ", password=" + password + "]"; } }
3. Transformación de objeto Java a JSON
/** * */ package com.raidentrance.pojo.test; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.raidentrance.pojo.User; /** * @author raidentrance * */ public class FromObjectToJSON { public static void main(String[] args) throws JsonProcessingException { User user=new User(); user.setIdUser(1); user.setUsername("raidentrance"); user.setPassword("superSecret"<span id="mce_SELREST_start" style="overflow:hidden;line-height:0;"></span>); ObjectMapper mapper=new ObjectMapper(); String json = mapper.writeValueAsString(user); System.out.println(json); } }
Salida:
{"idUser":1,"username":"raidentrance","password":"superSecret"}
4. Transformación de JSON a objeto Java
/** * */ package com.raidentrance.pojo.test; import java.io.IOException; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.raidentrance.pojo.User; /** * @author raidentrance * */ public class FromJSONToObject { public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException { String json = "{\"idUser\":1,\"username\":\"raidentrance\",\"password\":\"superSecret\"}"; ObjectMapper mapper = new ObjectMapper(); User user = mapper.readValue(json, User.class); System.out.println(user); } }
Salida:
User [idUser=1, username=raidentrance, password=superSecret]
5. JsonViews
JsonViews son utilizadas para serializar los objetos de diferentes formas, en el ejemplo actual se utilizarán para serializar y deserializar objetos tipo usuario incluyendo y sin incluir el password.
Definición de vistas a utilizar.
/** * */ package com.raidentrance.util; /** * @author raidentrance * */ public class Views { public static class Public { } public static class Internal extends Public { } }
Modificación a la clase User para definir la vista a utilizar
/** * */ package com.raidentrance.pojo; import com.fasterxml.jackson.annotation.JsonView; import com.raidentrance.util.Views; /** * @author raidentrance * */ public class User { @JsonView(Views.Public.class) private Integer idUser; @JsonView(Views.Public.class) private String username; @JsonView(Views.Internal.class) private String password; ...... }
Salida:
{"idUser":1,"username":"raidentrance"}
Puedes encontrar el código completo del ejemplo en el siguiente enlace: https://github.com/raidentrance/jackon-example
Autor:
Autor: Alejandro Agapito Bautista
Twitter: @raidentrance
Contacto:raidentrance@gmail.com