Jackson 2 – Transforma objetos java a JSON


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
    1. jackson-core  (incluida en jackson-databind)
    2. 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;">&#65279;</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

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s