2011-11-28 8 views

Odpowiedz

5

Do tego punktu, należy przekonwertować go na String w jakimś standardowym formacie, który następnie można przeanalizować i zbudować przy użyciu istniejących bibliotek. Na przykład JSON, XML lub CSV, wszystkie, które są znormalizowanymi i wymiennymi formatami ciągów, dla których istnieje wiele bibliotek parsujących/budujących w wielu językach programowania.

Android ma wbudowany analizator składni JSON w the org.json package. Ma nawet wbudowany analizator składni XML w . Nie jestem pewien, czy istnieje wbudowana biblioteka CSV, ale wydaje się, że nie ma jej. Java EE ma w smaku JAXB świetny wbudowany analizator składni XML, ale nie ma wbudowanego analizatora składni JSON. Tylko implementacje JAX-RS (Jersey, RESTeasy, itp.) Zapewniają parser JSON. Jeśli zamiast tego możesz zmienić serwlet, aby był usługą sieciową JAX-RS, będziesz mieć możliwość zwrócenia zarówno XML, jak i JSON przy minimalnym wysiłku. Zobacz także Servlet vs RESTful.

Wybór formatu zależy od wyłącznie wymagań funkcjonalnych. Na przykład, czy serwlet ma zostać ponownie użyty do innych usług? Jakie są klienci docelowi? Etcetera.

W jakikolwiek sposób, format JSON jest zwykle bardziej zwięzły i ostatnio bardziej popularny niż XML, więc podam przykład kickoff, który przenosi dane w formacie JSON i założę, że naprawdę chcesz zrobić to z prostym serwletem waniliowym zamiast JAX-RS. W tym przykładzie wystarczy pobrać i upuścić bibliotekę JSON, taką jak Gson w /WEB-INF/lib, aby przekonwertować obiekty Java na JSON w serwlecie.

@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); 
} 

To będzie budować i powrót List w następującym formacie JSON:

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

To z kolei parsowalnym przez org.json API w Androidzie następująco:

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

dziękuję !!!!!! po raz pierwszy użyj json –

+0

Nie ma za co. Aby dowiedzieć się więcej na temat formatu JSON, sprawdź http://json.org – BalusC

+0

Rozumiem, że jest to bardzo stare, ale było bardzo pomocne Pomyślałem, że nadal będę pisać i pytać o prolek, który mam. Próbuję skompilować serwlet z powyższym przykładem kodu, ale otrzymuję komunikat "error: can not find symbol | String json = new Gson() etc" (ze strzałką wskazującą na Gson). Nie wiedziałem, do której biblioteki należy dodać, więc używam zarówno gson-2.2.3.jar, jak i gson-2.2.3-sources.jar Co może być nie tak? –

1

Jeśli jest to model oparty na przeciągnięciu, można wysłać żądanie HTTP GET do punktu końcowego serwletu z aplikacji na Androida, a odpowiedź HTTP może być obiektem JSON, utworzonym z listy tablic.

+0

Czy istnieje jakiś przykład kod dla reutrn a arrayList w servlet? –

Powiązane problemy