将arraylist从servlet发送到Android应用程序

use*_*CHU 6 android servlets

如何从servlet向Android应用程序发送数组列表?

Bal*_*usC 5

到目前为止,您需要将其转换为String某种标准格式,然后可以使用现有库对其进行分析和构建.例如,JSON,XML或CSV,它们都是标准化和可交换的字符串格式,许多编程语言中存在许多解析/构建库.

Android有一个内置JSON解析器org.json.它甚至在内置XML解析器org.xml.sax.我不确定是否有内置的CSV库,但似乎没有.Java EE在JAXB中具有很好的内置XML解析器,但它没有内置的JSON解析器.只有JAX-RS实现(Jersey,RESTeasy等)提供了JSON解析器.如果您可以将servlet更改为JAX-RS Web服务,那么您将能够以极少的工作量返回XML和JSON.另请参阅Servlet与RESTful.

选择哪种格式取决于唯一的功能要求.例如,servlet是否应该重用于其他服务?目标客户是什么?等等.

无论如何,JSON格式通常比XML更简洁,最近更受欢迎,所以我只是给出一个以JSON格式传输数据的启动示例,我假设你真的想用平面做vanilla servlet而不是JAX-RS.对于此示例,您只需下载并删除JSON库(如Gson)/WEB-INF/lib,以便将Java对象转换为servlet中的JSON.

@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);
}
Run Code Online (Sandbox Code Playgroud)

这将构建并返回List以下JSON格式:

["item1","item2","item3"]
Run Code Online (Sandbox Code Playgroud)

这又可以通过org.jsonAndroid中的API进行解析,如下所示:

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`.
Run Code Online (Sandbox Code Playgroud)