JSON-RPC-Java: devolviendo objetos complejos: Beans, Lists, Maps y Sets

json160.gifJSON-RPC-Java permite, como comentamos en el post anterior, la comunicación transparente entre el código JavaScript y Java.

Otra de las características que hacen tremendamente interesante a esta tecnología es el tratamiento que hace a los objetos devueltos. Esta librería es capaz de serializar los objetos Java y de deserializarlos como objetos JavaScript. Así ahorramos el tiempo necesario para determinar el formato de la información a enviar, siendo innecesario definir esquemas para nuestros XML o JSON como hacíamos sin JSON-RPC-Java.

Devolviendo Beans

Un Bean (o JavaBean) es un objeto Java que cumple las siguientes características:

  • Implementa un constructor sin parámetros.
  • Sus atributos son accesibles vía getters y setters.
  • Implementa la interfaz Serializable.

Podéis encontrar más información en la Web de esta tecnología.

Con JSON-RPC-Java, si una función de un objeto registrado devuelve un Bean este se serializa y se envia. De tal forma que podremos acceder a el como si se tratara de un objeto JavaScript.

Por ejemplo, un objeto de la siguiente clase:

public class Ejemplo implements Serializable {

private int id;
private String nombre;
public Ejemplo() {
}
public int getId() {

return id;

}
public void setId(int id) {

this.id = id;

}
public String getNombre() {

return nombre;

}
public void setNombre(String nombre) {

this.nombre = nombre;

}

}

Al ser devuelto y serializarse, el JSON que recibiria nuestra página seria:

{

"javaClass":"com.ateneaTech.Ejemplo",
"id":"12",
"nombre":"Un ejemplo"

}

Así, de forma transparente (sin tener que hacer el eval con lo que nos retorne la función) si la función foo devolviera un objeto de la clase Ejemplo podemos hacer:

var bar = jsonrpc.ejemplo.foo()
alert(bar.nombre);

Devolviendo colecciones de objetos: Lists, Maps y Sets

JSON-RPC-Java es capaz de serializar tambien las colecciones incluidas en java.util. concretamente puede serializar las diferentes colecciones que implementen las interfaces List, Set y Map.

En el primer caso, los List, el JSON que genera y evalua es de la forma:

{

"javaClass": "java.util.ArrayList",
"list": [0, 1, 2, 3, 4]

}

En el segundo, en el caso de los Set, el JSON es:

{

"javaClass": "java.util.HashMap",
"map": {"foo key": "foo value"}

}

Y en el tercero y último, los Map, es:

{

"javaClass": "java.util.HashSet",
"set": {"foo key": "foo key"}

}

De esta forma podemos acceder a grandes cantidades de información sin tener que diseñar ningun mecanismo de comunicación. JSON-RPC-Java se encargará de ello.

Si tenéis alguna pregunta no dudéis en comentar :)

Contact

Are you interested in our services?

Contact us