Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Java / GSON: Generar JSON desde objetos Java

GSON: Generar JSON desde objetos Java

Autor jc mouse jueves, junio 29, 2017

Gson es una biblioteca de código abierto para Java desarrollado por Google Inc que permite la serialización y deserialización entre objetos java y su representación en notación JSON (JavaScript Object Notation) el que nos sirve para el intercambio de datos. Puedes obtener más información (en ingles) desde google/gson y descargar la ultima versión la fecha GSON 2.8.1 , si usas Maven puedes usar la librería desde su repositorio GSON Repository.

En este post te mostrare un ejemplo de como convertir un objeto java en notación JSON.

Lo primero que hacemos es declarar las clases que queremos pasar a JSON

Clase: Ejemplo.java

A continuación una clase trivial donde se implementan la mayoría de los objetos usados en una clase java incluido, otras clases.

import java.util.List;
import java.util.Map;
/**
 * @see http://www.jc-mouse.net/
 * @author mouse
 */
public class Ejemplo {
    
    private int id;
    private String nombre_completo;
    private char sexo;
    private boolean soltero;    
    private Pais pais;
    private List<String> hobbies;
    private long[] array_de_numeros;            
    private double[] array_de_numeros_double;     
    private Map<String, String> mas_cosas;

    public Ejemplo() {}
    
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getNombre_completo() {
        return nombre_completo;
    }

    public void setNombre_completo(String nombre_completo) {
        this.nombre_completo = nombre_completo;
    }

    public char getSexo() {
        return sexo;
    }

    public void setSexo(char sexo) {
        this.sexo = sexo;
    }

    public boolean isSoltero() {
        return soltero;
    }

    public void setSoltero(boolean soltero) {
        this.soltero = soltero;
    }

    public Pais getPais() {
        return pais;
    }

    public void setPais(Pais pais) {
        this.pais = pais;
    }

    public List<String> getHobbies() {
        return hobbies;
    }

    public void setHobbies(List<String> hobbies) {
        this.hobbies = hobbies;
    }

    public long[] getArray_de_numeros() {
        return array_de_numeros;
    }

    public void setArray_de_numeros(long[] array_de_numeros) {
        this.array_de_numeros = array_de_numeros;
    }

    public double[] getArray_de_numeros_double() {
        return array_de_numeros_double;
    }

    public void setArray_de_numeros_double(double[] array_de_numeros_double) {
        this.array_de_numeros_double = array_de_numeros_double;
    }
    
    public Map<String, String> getMas_cosas() {
        return mas_cosas;
    }

    public void setMas_cosas(Map<String, String> mas_cosas) {
        this.mas_cosas = mas_cosas;
    }
    
}

Clase: Pais.java

Esta clase complementa la clase anterior que hace uso de ella.

import java.util.List;
/**
 * @see http://www.jc-mouse.net/
 * @author mouse
 */
public class Pais {
    
    private String nombre;
    private List<String> ciudades;

    public Pais() {}
    
    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public List<String> getCiudades() {
        return ciudades;
    }

    public void setCiudades(List<String> ciudades) {
        this.ciudades = ciudades;
    }
}

Y para convertir a JSON usamos:

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * @see http://www.jc-mouse.net/
 * @author mouse
 */
public class Main {
    
    public static void main(String[] args) {
        
        //Nueva instancia de clase Ejemplo
        Ejemplo ejemplo = new Ejemplo();
        
        ejemplo.setId(7);
        ejemplo.setNombre_completo("Olga Disima Deloyo");
        ejemplo.setSexo('F');
        ejemplo.setSoltero(false);
        
        Pais pais = new Pais();
        pais.setNombre("Bolivia");
        List<String> ciudades = new ArrayList<>();
        ciudades.add("Santa Cruz");
        ciudades.add("Cochabamba");
        ciudades.add("Tarija");
        ciudades.add("Cobija");
        pais.setCiudades(ciudades);
        ejemplo.setPais(pais);        
        
        List<String> hobbies = new ArrayList<>();
        hobbies.add("Jugar al Poker");
        hobbies.add("Hacer Yoga");
        hobbies.add("Matangana");
        ejemplo.setHobbies(hobbies);
        
        ejemplo.setArray_de_numeros(new long[] { 777, 12321, 987654321 });        
        ejemplo.setArray_de_numeros_double(new double[] { 1.7008f, 0.05f, 100.00f });
        
        Map<String, String> mas_cosas = new HashMap<>();
        mas_cosas.put("001A", "Hola");
        mas_cosas.put("001B", "Mundo");
        mas_cosas.put("002A", "Cruel");
        ejemplo.setMas_cosas(mas_cosas);
        
        //GSON 
        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        String jsonEjemplo = gson.toJson(ejemplo);
        System.out.println(jsonEjemplo);        
        
    }
    
}

Lo que nos dará como resultado:

{
  "id": 7,
  "nombre_completo": "Olga Disima Deloyo",
  "sexo": "F",
  "soltero": false,
  "pais": {
    "nombre": "Bolivia",
    "ciudades": [
      "Santa Cruz",
      "Cochabamba",
      "Tarija",
      "Cobija"
    ]
  },
  "hobbies": [
    "Jugar al Poker",
    "Hacer Yoga",
    "Matangana"
  ],
  "array_de_numeros": [
    777,
    12321,
    987654321
  ],
  "array_de_numeros_double": [
    1.7007999420166016,
    0.05000000074505806,
    100.0
  ],
  "mas_cosas": {
    "001A": "Hola",
    "001B": "Mundo",
    "002A": "Cruel"
  }
}

gson example

enjoy!!!

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

JSpinner: Cambiar color de fondo y fuente

JSpinner: Cambiar color de fondo y fuente

Un JSpinner es un componente swing de java con una caja de texto y un par de botones que nos permiten incrementar  y dec...

Ejemplo de uso de ProgressDialog

Ejemplo de uso de ProgressDialog

Un ProgressDialog muestra una ventana con un texto y una barra de progreso que indica el tiempo que tarda una tarea en r...

JSON Web Tokens: Teoría y práctica

JSON Web Tokens: Teoría y práctica

En este post aprenderemos lo que es un JSON Web Token, como crear nuestro propio token de acceso y como usarlo en un Ser...

Crea una ventana de dialogo “Acerca de…” personalizado

Crea una ventana de dialogo “Acerca de…” personalizado

Cuando se crean aplicaciones android o cualquier otro tipo de software, es importante dejar información del o los desarr...

Estilos condicionales en iReport

Estilos condicionales en iReport

iReport nos da la posibilidad de dar un formato condicional a los diferentes registros resultado de nuestras consultas S...

Reproducir video en JFrame Swing con JavaFX

Reproducir video en JFrame Swing con JavaFX

JavaFX un producto de  Sun Microsystems/Oracle Corporation que salio a la luz para competir con tecnologías como Flash o...

Comparte lo que sabes

Categorias

Últimas entradas

En este post, crearemos una tabla swing que implemente un control jcombobox en una columna de una tabla, llenaremos con...

En este post personalizaremos una tabla JTable Swing para pintar una imagen de fondo y darle un poco de estilo al encabe...

De las pocas herramientas disponibles entre librerías, frameworks, engines, etc para el desarrollo de videojuegos en len...

¿Quien no ha querido programar un juego? creo que la mayoría si no es que todos los que conocen de programación sin impo...

Android Bolivia

MAUS