2012-11-30 11 views
7

मैं आरईएसटी कॉल के लिए डोमेन ऑब्जेक्ट्स पर जेएसओएन ऑब्जेक्ट को डीकोड/एन्कोड करने के लिए जीडब्ल्यूटी ऑटोबेन फीचर का मूल्यांकन करने की कोशिश कर रहा हूं।जीडब्ल्यूटी ऑटोबेन - सूचियों को कैसे संभालें?

उदाहरण के बाद: http://code.google.com/p/google-web-toolkit/wiki/AutoBean#Quickstart

मैं एक डोमेन वस्तु के लिए एक विलक्षण JSON ऑब्जेक्ट परिवर्तित करने में सक्षम था:

AutoBean<Person> personBean = AutoBeanCodex.decode(factory, Person.class, JsonResources.INSTANCE.json().getText()); 

जहां JsonResources.INSTANCE.json() JSON स्ट्रिंग लौटा रहा है।

हालांकि, मैं JSON से व्यक्ति वस्तुओं की सूची को परिवर्तित करने में सफल नहीं रहा हूं।

यदि कोई इसका उदाहरण है तो यह सहायक होगा?

धन्यवाद!

उत्तर

17

वैसे एकमात्र तरीका मैं सोच सकता हूं कि एक विशेष ऑटोबेन बनाना है, जिसमें List<Person> संपत्ति होगी।

public interface Result { 
    void setPersons(List<Person> persons); 
    List<Person> getPersons(); 
} 

और उदाहरण JSON स्ट्रिंग::

{ 
    persons:[ 
     {"name":"Thomas Broyer"}, 
     {"name":"Colin Alworth"} 
    ] 
} 

अद्यतन: वर्कअराउंड जब इनपुट JSON एक सरणी (के रूप में टिप्पणी में persons[0] ने सुझाव दिया) .E.g है उदाहरण के लिए। JSON इस तरह दिखता है:

[{"name":"Thomas Broyer"},{"name":"Colin Alworth"}] 

और पार्सिंग कोड इस तरह दिखता है:

AutoBeanCodex.decode(factory, Result.class, "{\"persons\": " + json + "}").getPersons(); 
+1

अपने नमूना कोड के लिए +1 ;-) –

+3

और JSON बदले बिना मुद्दा वैकल्पिक हल के लिए: 'AutoBeanCodex.decode (कारखाना, परिणाम.क्लास; "{\" व्यक्ति \ ":" + जेसन + "}")। getPersons() ' –

+0

यह वह तकनीक है जिसका उपयोग मैं अपने ऑटोबेन्स में करता हूं। लेकिन मुझे लगता है कि मैं @ थॉमसब्रायर द्वारा बनाई गई तकनीक को लागू करूँगा। – Jonathan

संबंधित मुद्दे