Foros del Web » Programación para mayores de 30 ;) » Java »

obtener en servlet jsonArray enviado por ajax

Estas en el tema de obtener en servlet jsonArray enviado por ajax en el foro de Java en Foros del Web. Hola a todos en el foro. El el foro de jquery acabo de consultar como envia r un jsonArray usando ajax. Ahora me peguntaba como ...
  #1 (permalink)  
Antiguo 30/05/2013, 20:50
 
Fecha de Ingreso: enero-2012
Ubicación: Santiago de Surco, Lima - Perú
Mensajes: 266
Antigüedad: 12 años, 3 meses
Puntos: 57
Pregunta obtener en servlet jsonArray enviado por ajax

Hola a todos en el foro.

El el foro de jquery acabo de consultar como envia r un jsonArray usando ajax. Ahora me peguntaba como podria capturar ese valor en un servlet actualmente ocupo Gson para crear mis compejos jsonArray los cuales envio a la vista para procesarlis con javascript.

Asi que ahora tengo doble duda de como enviar correctamente y como recepcionar ese valor en el servlet.

Agradeceria mucho la ayuda que me puedan dar.

P.D.: No dejo el codigo que estuve desarrollando porque estoy publicando desde mi movil.

Muchas gracias.
  #2 (permalink)  
Antiguo 25/07/2013, 08:11
 
Fecha de Ingreso: enero-2012
Ubicación: Santiago de Surco, Lima - Perú
Mensajes: 266
Antigüedad: 12 años, 3 meses
Puntos: 57
Pregunta Respuesta: obtener en servlet jsonArray enviado por ajax

Ya solucioné la parte del cliente eN el envío del jsonarray.

Ahora en el servlet capturo un parámetro llamado "persons"

El string persons es:

Código JSON:
Ver original
  1. [{"name":"george minaya","age":23},{"name":"victor farro","age":22}]

Código Javascript:
Ver original
  1. var persons = $.parseJSON('[{"name":"george minaya","age":23},{"name":"victor farro","age":22}]');
  2. $.ajax({
  3.     url: 'InfoAction.do',
  4.     data: {persons: JSON.stringify(persons)},
  5.     method: 'post',
  6.     dataType: 'json',
  7.     success: function(data) {}
  8. })

¿Como puedo manipular ese String con la librería Gson?

Terminé manipulándolo de una manera no tan limpia (incluso usando .replace()).

Código Java:
Ver original
  1. JsonArray ja = new JsonParser().parse(request.getParameter("persons")).getAsJsonArray();
  2. for (JsonElement je : ja) {
  3.     System.out.println(je.getAsJsonObject().get("name").toString().replaceAll("\"", ""));
  4. }
  #3 (permalink)  
Antiguo 25/07/2013, 08:50
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: obtener en servlet jsonArray enviado por ajax

Hola:

La forma de usar estos Json con Gson es crear una clase cualquiera que tenga dos atributos name como String y age como int. No estoy seguro, pero debería funcionar algo como esto

Código Java:
Ver original
  1. Persona [] personas = gson.fromJson(tuString, Persona[].class);

siendo Persona la clase con dos atributos name y age. Echa un ojo de todas formas a la documentación de gson https://sites.google.com/site/gson/g...Array-Examples

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #4 (permalink)  
Antiguo 25/07/2013, 12:20
 
Fecha de Ingreso: enero-2012
Ubicación: Santiago de Surco, Lima - Perú
Mensajes: 266
Antigüedad: 12 años, 3 meses
Puntos: 57
Mensaje Respuesta: obtener en servlet jsonArray enviado por ajax

Success!

Código Java:
Ver original
  1. public class Person {
  2.  
  3.     private String name;
  4.     private int age;
  5.  
  6.     public String getName() {
  7.         return name;
  8.     }
  9.     public void setName(String name) {
  10.         this.name = name;
  11.     }
  12.     public int getAge() {
  13.         return age;
  14.     }
  15.     public void setAge(int age) {
  16.         this.age = age;
  17.     }
  18. }

Código Java:
Ver original
  1. String param = request.getParameter("persons");
  2. Person[] persons = new Gson().fromJson(param, Person[].class);
  3. for (Person person : persons) {
  4.     System.out.println(person.getAge() + " " + person.getName());
  5. }

chuidiang muchas gracias!

Etiquetas: ajax, servlet
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:57.