Introducción Java y JSON – Segunda parte (Con ejemplo)
Esta es la segunda entrega de Introducción a Json con Java y aquí veremos un ejemplo mas robusto y práctico de utilizar Java para generar objetos con la notación que nos exige Javascript osea JSON.
I: El requerimiento.
El webmaster del sitio del festival del viña nos pide la parrilla programática para incluirla en varias partes del sitio, como solución a su requerimiento nosotros le planteamos el uso de JSON.
Los detalles del requerimiento, es que la programación del festival debe estar separado por los dias y que pueda estar sujeto a cambios, por este motivo utilizaremos Java para crear los objetos JSON.
II: Creando las clases con JAVA
Necesitamos la clase Festival, Programa y Artista.
Clase Artista
public class Artista {
public String nombre;
public String categoria;
public Artista() {
}
public Artista(String nombre, String categoria) {
this.nombre = nombre;
this.categoria = categoria;
}
}
Clase Programa
public class Programa {
public String dia;
public List<Artista> artistas;
public Programa(){}
public Programa(String dia, List<Artista> artistas){
this.dia = dia;
this.artistas = artistas;
}
}
Clase Festival
public class Festival {
public String nombre;
public List<Programa> programacion;
public Festival(){
}
public Festival(String nombre, List<Programa> programacion){
this.nombre = nombre;
this.programacion = programacion;
}
}
III:Implementación
Luego que tenemos las clases, las instaciamos y llenamos la data manualmente. Cabe destacar que esto perfectamente puede ser extraido de una DB u otro source, pero consultas a DB no esta en el alcance de este documento.
public class Main {
//Creando Listas de artistas
public static void main(String[] args) {
//Creando Artistas
List<Artista> lunes = new ArrayList<Artista>();
List<Artista> martes = new ArrayList<Artista>();
List<Artista> miercoles = new ArrayList<Artista>();
List<Artista> jueves = new ArrayList<Artista>();
List<Artista> viernes = new ArrayList<Artista>();
List<Artista> sabado = new ArrayList<Artista>();
//Creando Programacion
List<Programa> programacion = new ArrayList<Programa>();
lunes.add(new Artista("J. Manuel Serrat", "Musico/Cantante"));
lunes.add(new Artista("Camila", "Musico/Cantante"));
lunes.add(new Artista("La Noche", "Musico/Cantante"));
programacion.add(new Programa("Lunes", lunes));
//Martes 24:
martes.add(new Artista("Juanes", "Musico/Cantante"));
martes.add(new Artista("Fernando Ubiergo", "Musico/Cantante"));
martes.add(new Artista("KC and the Sunshine Band", "Musico/Cantante"));
programacion.add(new Programa("Martes", martes));
//Miércoles 25:
miercoles.add(new Artista("Carlos Santana", "Musico/Cantante"));
miercoles.add(new Artista("Dinamita Show", "Musico/Cantante"));
miercoles.add(new Artista("Roger Hodgson", "Musico Cantante"));
programacion.add(new Programa("Miercoes", miercoles));
//Jueves 26:
jueves.add(new Artista("Simply Red", "Musico/Cantante"));
jueves.add(new Artista("Manpoval", "Musico/Cantante"));
jueves.add(new Artista("Paolo Meneguzzi", "Musico/Cantante"));
jueves.add(new Artista("R.K.M. Y KEN Y", "Musico/Cantante"));
programacion.add(new Programa("Jueves", jueves));
//Viernes 27:
viernes.add(new Artista("Luis Fonsi", "Musico/Cantante"));
viernes.add(new Artista("Daddy Yankee", "Musico/Cantante"));
programacion.add(new Programa("Vienres", viernes));
//Sábado 28:
sabado.add(new Artista("Natalino", "Musico/Cantante"));
sabado.add(new Artista("Marc Anthony", "Musico/Cantante"));
programacion.add(new Programa("Sabado", sabado));
//Ya con todos los datos, creamos el Festival de viña
Festival festival2009 = new Festival("Viña 2009 50 años", programacion);
}
}
Finalmente convertimos nuestro objeto festival2009 a JSON
<span style="white-space:pre"> </span> Gson gson = new Gson();
String jsonOutput = gson.toJson(festival2009);
System.out.println("txt: "+jsonOutput);
El output generado por google queda de la siguiente manera
{
"nombre": "Viña 2009 50 años",
"programacion": [
{
"dia": "Lunes",
"artistas": [
{
"nombre": "J. Manuel Serrat",
"categoria": "Musico/Cantante"
},
{
"nombre": "Camila",
"categoria": "Musico/Cantante"
},
{
"nombre": "La Noche",
"categoria": "Musico/Cantante"
}
]
},
{
"dia": "Martes",
"artistas": [
{
"nombre": "Juanes",
"categoria": "Musico/Cantante"
},
{
"nombre": "Fernando Ubiergo",
"categoria": "Musico/Cantante"
},
{
"nombre": "KC and the Sunshine Band",
"categoria": "Musico/Cantante"
}
]
},
{
"dia": "Miercoes",
"artistas": [
{
"nombre": "Carlos Santana",
"categoria": "Musico/Cantante"
},
{
"nombre": "Dinamita Show",
"categoria": "Musico/Cantante"
},
{
"nombre": "Roger Hodgson",
"categoria": "Musico Cantante"
}
]
},
{
"dia": "Jueves",
"artistas": [
{
"nombre": "Simply Red",
"categoria": "Musico/Cantante"
},
{
"nombre": "Manpoval",
"categoria": "Musico/Cantante"
},
{
"nombre": "Paolo Meneguzzi",
"categoria": "Musico/Cantante"
},
{
"nombre": "R.K.M. Y KEN Y",
"categoria": "Musico/Cantante"
}
]
},
{
"dia": "Vienres",
"artistas": [
{
"nombre": "Luis Fonsi",
"categoria": "Musico/Cantante"
},
{
"nombre": "Daddy Yankee",
"categoria": "Musico/Cantante"
}
]
},
{
"dia": "Sabado",
"artistas": [
{
"nombre": "Natalino",
"categoria": "Musico/Cantante"
},
{
"nombre": "Marc Anthony",
"categoria": "Musico/Cantante"
}
]
}
]
}
IV: Despliegue en web:
Hay muchas formas de desplegar esto en web, si tienen firebug copien y pegen la siguiente linea en la consola.


objeto = {"nombre":"Vi\u00f1a 2009 50 a\u00f1os","programacion":[{"dia":"Lunes","artistas":[{"nombre":"J. Manuel Serrat","categoria":"Musico/Cantante"},{"nombre":"Camila","categoria":"Musico/Cantante"},{"nombre":"La Noche","categoria":"Musico/Cantante"}]},{"dia":"Martes","artistas":[{"nombre":"Juanes","categoria":"Musico/Cantante"},{"nombre":"Fernando Ubiergo","categoria":"Musico/Cantante"},{"nombre":"KC and the Sunshine Band","categoria":"Musico/Cantante"}]},{"dia":"Miercoes","artistas":[{"nombre":"Carlos Santana","categoria":"Musico/Cantante"},{"nombre":"Dinamita Show","categoria":"Musico/Cantante"},{"nombre":"Roger Hodgson","categoria":"Musico Cantante"}]},{"dia":"Jueves","artistas":[{"nombre":"Simply Red","categoria":"Musico/Cantante"},{"nombre":"Manpoval","categoria":"Musico/Cantante"},{"nombre":"Paolo Meneguzzi","categoria":"Musico/Cantante"},{"nombre":"R.K.M. Y KEN Y","categoria":"Musico/Cantante"}]},{"dia":"Vienres","artistas":[{"nombre":"Luis Fonsi","categoria":"Musico/Cantante"},{"nombre":"Daddy Yankee","categoria":"Musico/Cantante"}]},{"dia":"Sabado","artistas":[{"nombre":"Natalino","categoria":"Musico/Cantante"},{"nombre":"Marc Anthony","categoria":"Musico/Cantante"}]}]}
<div>
V: Ejemplo funcional en XHTML, JQUERY y JSON
El como hice esto, quedará para un proximo documento pero coloco el link del ejemplo (totalmente robable
)
[...] Segunda parte [...]
Buen dia estoy super empezando con programacion web tengo experiencia en Desktop una preguntica el output generado por json me serviria para que para ser enviado al cliente y procesado como ajax es decir modificar el DOM y modificar la pagina o algo claro sin actualizar toda la pagina BackStage. disculpa mi ignoracia estoy newbie
Estimado Christian, JSON es como el XML pero mas liviano, la idea es devolver del servidor SOLO DATOS y procesarlos en el cliente (browser).
La idea es que AJAX transporte datos limpios (SIN HTML) con JSON y que la modificación en la página (DOM) se realice con Javascript.
Si sigues teniendo dudes en volver a preguntar.
Estoy intentando transformar una respuesta que recibo de un servidor a formato JSON.Éste servidor realmente me esta devolviendo un obejto JSON pero el metodo de RequestCallback de java tiene interno 2 metodos con cabeceras establecidas,y el metodo
Estoy intentando transformar una respuesta que recibo de un servidor a formato JSON.Éste servidor realmente me esta devolviendo un obejto JSON pero el metodo de RequestCallback de java tiene interno 2 metodos con cabeceras establecidas,y el metodo que recibe la respuesta tiene en la cabecera que recibe un objeto Response.
El cual pretendo pasar a JSON como indicais :
Gson gson = new Gson();
String jsonOutput = gson.toJson(response); //siendo response la respuesta del servidor
He importado las librerias:gson-1.4.jar , gson-1.4-javadoc.jar y gson-1.4-sources.jar.
Y me da el fallo: No source code is available for type com.google.gson.Gson; did you forget to inherit a required module?
Y no se porque.¿Alguien tiene una idea?Gracias de antemano
@Cristina, ese error corresponde a que tu IDE esta tratando de encontrar los archivos fuentes de GSON que no son necesarios para el funcionamiento de este.
Para que el GSON funcione debes cargar solamente la libreria gson-1.4.jar en tu carpeta de librerias, por defecto en proyecto/web-inf/lib (opcionalmente gson-1.4-javadoc.jar).
En resumen, copias el JAR en la carpeta de librerias, refrescas el proyecto, compilas y pruebas. Cuentame si te funcionó. Saludos.