Se puede descargar la librería Gson de code.google.com o directamente de este link <-click.
En este caso se usará la clase Hijo para definir la estructura que tendrá el json. Hijo es un pojo sencillo como se ve a continuación:
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class Hijo { | |
private String nombre; | |
private String apellido; | |
private int edad; | |
private Hijo hijo; | |
public Hijo() { | |
} | |
public Hijo getHijo() { | |
return hijo; | |
} | |
public void setHijo(Hijo hijo) { | |
this.hijo = hijo; | |
} | |
public int getEdad() { | |
return edad; | |
} | |
public void setEdad(int edad) { | |
this.edad = edad; | |
} | |
public Hijo(String nombre, String apellido) { | |
this.nombre = nombre; | |
this.apellido = apellido; | |
} | |
public String getNombre() { | |
return nombre; | |
} | |
public void setNombre(String nombre) { | |
this.nombre = nombre; | |
} | |
public String getApellido() { | |
return apellido; | |
} | |
public void setApellido(String apellido) { | |
this.apellido = apellido; | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import com.google.gson.Gson; | |
public class GsonSimpleRead { | |
public GsonSimpleRead() { | |
String json = "{\"nombre\":\"Juan\"," | |
+ "\"apellido\":\"Carabela\"," | |
+ "\"edad\":45, " | |
+ "\"hijo\":{" | |
+ "\"nombre\":\"Pepe\"," | |
+ "\"apellido\":\"Carabela\"," | |
+ "\"edad\":21," | |
+ " \"hijo\":null" | |
+ "}" | |
+ "}"; | |
Gson gson = new Gson(); | |
Hijo hijo = gson.fromJson(json, Hijo.class); | |
System.out.println(hijo.getEdad()); | |
System.out.println(hijo.getHijo().getNombre()); | |
} | |
public static void main(String[] args) { | |
GsonSimpleRead gson = new GsonSimpleRead(); | |
} | |
} |
Este código da como resultado lo siguiente:
45
Pepe
Por otro lado si se desea escribir una cadena json en base a un objeto, en este caso Hijo, simplemente se debe utilizar el siguiente código:
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import com.google.gson.Gson; | |
public class GsonSimpleWrite { | |
public GsonSimpleWrite() { | |
Hijo hijo = new Hijo(); | |
hijo.setNombre("Juan"); | |
hijo.setApellido("Carabela"); | |
hijo.setEdad(46); | |
Hijo hijo2 = new Hijo(); | |
hijo2.setNombre("Rambo"); | |
hijo2.setApellido("Carabela"); | |
hijo2.setEdad(21); | |
hijo2.setHijo(null); | |
hijo.setHijo(hijo2); | |
Gson gson = new Gson(); | |
String json = gson.toJson(hijo); | |
System.out.println(json); | |
} | |
public static void main(String[] args) { | |
GsonSimpleWrite gson = new GsonSimpleWrite(); | |
} | |
} |
El código anterior da como resultado la siguiente salida en consola:
{
"nombre":"Juan",
"apellido":"Carabela",
"edad":46,
"hijo":{
"nombre":"Rambo",
"apellido":"Carabela",
"edad":21
}
}
Hola me gustaria saber como leer el ultimo ejemplo, gracias.
ResponderEliminarSe te refieres al json despleagado al final, basta con tomar ese String y crear un nuevo hijo:
EliminarHijo hijo = gson.fromJson(json, Hijo.class);
Toma en cuenta que para incluir en un String las comillas (") en java debes agregarle un slash invertido de la siguienter forma \".
Saludos.
hola, como se convertiria a objetos esto:
ResponderEliminar[{"estadoacademicoSimple":[{"legajo":"1231","estadoAcademico":"regular","carreraSimple":{"nombre":"sistemas"},"fechaIngreso":"Mar 30, 2008 12:00:00 AM","fechaBaja":"Nov 30, 2013 12:00:00 AM"},{"legajo":"1233","estadoAcademico":"libre","carreraSimple":{"nombre":"quimica"},"fechaIngreso":"Jul 30, 2008 12:00:00 AM","fechaBaja":"Nov 30, 2013 12:00:00 AM"}]}]
Tengo entendido que al ser una lista de estados academicos debo definir un tipo con type, y ademas un array de los estados.
Saludos y gracias
Hola, al ser un array que puede ser de cualquier tipo tienes que definir un tipo como te muestro a continuación.
EliminarType type = new TypeToken>(){}.getType();
El objeto quedaría como:
class EstadosAcademicos{
List estadoacademicoSimple;
}
class EstadoAcademicoSimple{
String legajo;
String estadoAcademico;
CarreraSimple carreraSimple;
Date fechaIngreso;
Date fechaBaja;
}
class CarreraSimple{
String nombre;
}
No es exactamente esa pero debería darte una idea.
Saludos.