2012-12-18 17 views
5

का उपयोग करके एकाधिक मान लौटें। मैं अपने सर्वर से जावा में AJAX पर वापस आने के लिए कई मानों का प्रयास कर रहा हूं। अभी के लिए, मैं इस दृष्टिकोण का उपयोग, लेकिन यह एक अच्छा समाधान नहीं है:JSON, jQuery और AJAX और जावा

जावास्क्रिप्ट:

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

जावा:

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

यह कई मूल्यों वापस जाने के लिए संभव है या एक वस्तु या एक अन्य समाधान?

+1

क्या इस समाधान के बारे में अच्छा नहीं है? – ryadavilli

+0

आपको लगता है कि समाधान का कौन सा हिस्सा अच्छा नहीं है? क्या यह एक प्रदर्शन मुद्दा है, या आपको लगता है कि आपके कोड में सुधार की आवश्यकता है? साथ ही, क्या यह जावा कोड या जावास्क्रिप्ट कोड है जिसे आप सुधारना चाहते हैं? –

+0

क्योंकि यह गतिशील कोड नहीं है। यदि कोई नई सूची है। उदाहरण के लिए जानकारी के बीच एक सूची FirstValue और infoTirdValue, मेरा कोड जेएस संशोधित किया जाना चाहिए। –

उत्तर

3

यदि यह मदद करता है, तो यहां आपके ऊपर दिए गए कुछ कोड स्निपेट हैं, यह दिखाते हुए कि किसी सरणी के बजाय किसी ऑब्जेक्ट-शैली प्रतिक्रिया को कैसे स्विच किया जाए। - आप वास्तव में सिर्फ एक सादे पुराने जावा वस्तु सीधे क्रमानुसार कर सकते हैं, जो संभवत: अधिक से अधिक सुंदर है http://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/com/google/gson/JsonObject.html

हालांकि, Gson की तरह से है कि अधिक से अधिक शक्तिशाली: Gson वर्ग JsonObject जो सबसे आसान बात आप का उपयोग करने के लिए हो सकता है शामिल मौजूदा डेटा को JsonObject में परिवर्तित करने का मध्यवर्ती चरण (यह मौजूदा उत्तर देखें: https://stackoverflow.com/questions/1668862/good-json-java-library/1668951#1668951)। कम से कम, info*Value() विधियों को शायद उस ऑब्जेक्ट के तरीकों के रूप में बेहतर तरीके से सेवा दी जाएगी जो आप क्रमबद्ध कर रहे थे। और जावास्क्रिप्ट में कार्यात्मक रूप से स्कॉप्ड चर के रूप में लौटाए गए ऑब्जेक्ट गुणों को संग्रहीत करने के बजाय, मुझे लगता है कि आप ऑब्जेक्ट को बस पास कर सकते हैं और इसकी गुणों तक पहुंच सकते हैं।

जावा

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