2011-11-28 6 views

Respuesta

5

Hasta el punto, necesita convertirlo a String en un formato estándar que luego se puede analizar y crear utilizando las bibliotecas existentes. Por ejemplo, JSON, XML o CSV, todos los cuales son formatos de cadena estandarizados e intercambiables para los que existen muchas bibliotecas de análisis/construcción en muchos lenguajes de programación.

Android tiene un analizador JSON incorporado en the org.json package. Incluso tiene un analizador XML integrado en . No estoy seguro de si hay una biblioteca CSV integrada, pero parece que no hay ninguna. Java EE tiene en el sabor de JAXB un gran analizador XML incorporado, pero no tiene un analizador JSON incorporado. Solo las implementaciones de JAX-RS (Jersey, RESTeasy, etc.) proporcionan un analizador JSON. Si puede cambiar su servlet para que sea un servicio web JAX-RS, tendrá la ventaja de poder devolver tanto XML como JSON con un mínimo esfuerzo. Vea también Servlet vs RESTful.

Qué formato elegir depende de los únicos requisitos funcionales. Por ejemplo, ¿se supone que el servlet debe reutilizarse para otros servicios? ¿Cuáles son los clientes objetivo? Etcétera

De cualquier manera, el formato JSON es generalmente más escueto y últimamente más popular que XML, así que daré un ejemplo inicial que transfiera los datos en el formato JSON y asumiré que realmente quieres hacer con un servlet simple de vainilla en lugar de JAX-RS. Para este ejemplo, solo necesita descargar y colocar una biblioteca JSON como Gson en /WEB-INF/lib para convertir objetos Java a JSON en el servlet.

@Override 
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    List<String> list = new ArrayList<String>(); 
    list.add("item1"); 
    list.add("item2"); 
    list.add("item3"); 
    String json = new Gson().toJson(list); 

    response.setContentType("application/json"); 
    response.setCharacterEncoding("UTF-8"); 
    response.getWriter().write(json); 
} 

Esto construir y devolver el List en el siguiente formato JSON:

["item1","item2","item3"] 

Esto a su vez es analizable por org.json API de Android de la siguiente manera:

String jsonString = getServletResponseAsStringSomehow(); // HttpClient? 
JSONArray jsonArray = new JSONArray(jsonString); 
List<String> list = new ArrayList<String>(); 

for (int i = 0; i < jsonArray.length(); i++) { 
    list.add(jsonArray.getString(i)); 
} 

// Now you can use `list`. 
+0

gracias !!!!!! primera vez use json –

+0

De nada. Para obtener más información sobre el formato JSON, consulte http://json.org – BalusC

+0

Me doy cuenta de que esto es muy antiguo, pero fue muy útil. Pensé que aún escribiría y le preguntaría sobre un problema que estoy teniendo. Estoy intentando compilar un servlet con el ejemplo de código anterior, pero obtengo un "error: no puedo encontrar el símbolo | String json = new Gson() etc" (con una flecha apuntando a Gson). No sabía qué biblioteca incluir, así que estoy usando gson-2.2.3.jar y gson-2.2.3-sources.jar ¿Qué podría estar mal? –

1

Si se trata de un modelo basado en extracción, puede enviar la solicitud HTTP GET al punto final del servlet desde su aplicación Android, y la respuesta HTTP podría ser un objeto JSON, creado a partir de una lista de matriz.

+0

¿Hay algún ejemplo código para volver a establecer una lista de arreglos en servlet? –

Cuestiones relacionadas