2011-11-28 69 views

回答

5

至此,您需要以某種標準格式將其轉換爲String,然後可以使用現有的庫進行解析和構建。例如,JSON,XML或CSV,所有這些都是標準化和可交換的字符串格式,很多編程語言中存在很多解析/構建庫。

Android在the org.json package中有一個內置的JSON解析器。它甚至在中有一個內置的XML解析器。我不確定是否有內置的CSV庫,但似乎沒有。 Java EE的風格是JAXB,它是一個很好的內置XML解析器,但它沒有內置的JSON解析器。只有JAX-RS實現(Jersey,RESTeasy等)提供了JSON解析器。如果您可以將servlet更改爲JAX-RS webservice,那麼您將能夠以極小的努力返回XML和JSON。另見Servlet vs RESTful

選擇哪種格式取決於唯一的功能要求。例如,該servlet是否應該被重用於其他服務?什麼是目標客戶?等等。

無論如何,JSON格式通常比XML更簡潔,最近更受歡迎,所以我將給出一個以JSON格式傳輸數據的啓動示例,我假設您確實想要執行此操作它使用簡單的香草servlet而不是JAX-RS。在這個例子中,您只需要下載並放置一個JSON庫,如 /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); 
} 

這將構建並在下面的JSON格式返回List:由org.json API在Android中

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

這反過來可分析如下:

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

謝謝!!!!!!第一次使用json –

+0

不客氣。要了解關於JSON格式的更多信息,請查看http://json.org – BalusC

+0

我意識到這是超舊的,但它非常有幫助我想我仍然會寫和詢問我所擁有的一個prolem。我想用上面的代碼示例編譯一個servlet,但是我收到「錯誤:無法找到符號|字符串json =新的Gson()等」(帶有指向Gson的箭頭)。我不知道要包含哪個庫,所以我使用的是gson-2.2.3.jar和gson-2.2.3-sources.jar 什麼可能是錯誤的? –

1

如果它是一個基於拉的模型,您可以從您的android應用程序發送HTTP GET請求到servlet端點,並且HTTP響應可以是從數組列表創建的JSON對象。

+0

是否有示例在servlet中重新創建一個arrayList的代碼? –

相關問題