2012-12-18 12 views
5

Próbuję wielu wartości, aby powrócić z mojego serwera do AJAX w Javie. Na razie używam tego podejścia, ale to nie jest dobre rozwiązanie:Zwróć wiele wartości za pomocą JSON, jQuery i AJAX i Java

Javascript:

success: function(list) { 
    var firstValue = list[0]; 
    var secondValue = list[1]; 
    var thirdValue = list[2]; 
} 

Java:

ArrayList<ArrayList<String>> list = new ArrayList<ArrayList<String>>(); 
list.add(infoFirstValue()); 
list.add(infoThirdValue()); 
list.add(infoThirdValue()); 
String glist = gson.toJson(list); 
response.getWriter().write(glist); 

Czy to możliwe, aby powrócić kilka wartości lub obiekt lub inne rozwiązanie?

+1

Co nie jest dobre o tym rozwiązaniu? – ryadavilli

+0

Jaka część rozwiązania nie jest dobra? Czy jest to problem z wydajnością, czy też uważasz, że Twój kod wymaga poprawy? Czy jest to kod Java lub kod JavaScript, który chcesz poprawić? –

+0

Ponieważ nie jest to kod dynamiczny. Jeśli jest nowa lista. Na przykład lista pomiędzy infoFirstValue i infoThirdValue, Mój kod JS powinna zostać zmieniona. –

Odpowiedz

3

Jeśli to pomoże, oto kilka fragmentów kodu na podstawie powyższych powyżej, pokazujących, jak przełączyć się na odpowiedź typu obiektu zamiast tablicy. Gson obejmuje klasę JsonObject, która może być najprostszą rzeczą, której możesz użyć: http://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/com/google/gson/JsonObject.html

Jednak sposób Gsona jest o wiele potężniejszy - możesz tak naprawdę serializować zwykły stary obiekt Java bezpośrednio, co jest prawdopodobnie bardziej eleganckie niż pośredni krok konwertowania istniejących danych na JsonObject (zobacz tę istniejącą odpowiedź: https://stackoverflow.com/questions/1668862/good-json-java-library/1668951#1668951). Co najmniej, metody info*Value() prawdopodobnie byłyby lepiej wykorzystane jako metody obiektu, który serializowałeś. Zamiast zapisywania zwróconych właściwości obiektu jako zmiennych funkcjonalnych w JavaScript, zakładam, że możesz po prostu przekazać obiekt i uzyskać dostęp do jego właściwości.

JAVA

JSONObject rv = new JSONObject(); 
rv.add("firstValue", infoFirstValue()); 
rv.add("secondValue", infoSecondValue()); 
rv.add("thirdValue", infoThirdValue()); 

String gobject = gson.toJson(rv); 
response.getWriter().write(gobject); 

JAVASCRIPT

success: function(obj){ 
    var firstValue = obj.firstValue; 
    var secondValue = obj.secondValue; 
    var thirdValue = obj.thirdValue; 
} 
Powiązane problemy