2012-11-30 27 views
7

JSON nesnesini REST çağrıları için etki alanı nesnelerine kodlamak/kodlamak için GWT Autobean özelliğini değerlendirmeye çalışıyorum. Örneğin aşağıdakiGWT Autobean - listeler nasıl ele alınır?

: http://code.google.com/p/google-web-toolkit/wiki/AutoBean#Quickstart bir alan adının bir tekil JSON nesnesi dönüştürmek mümkün

:

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

JsonResources.INSTANCE.json() JSON dizesini dönüyor.

Ancak, JSON'dan Kişi nesnelerin listesini dönüştürmek için başarılı olamamıştır. Herkes bu bir örnek varsa

Bu yararlı olacaktır?

Teşekkürler!

cevap

17

Eh aklıma gelen tek yolu List<Person> özelliği olacak özel bir autobean, yaratmaktır.

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

Ve örnek json dize:

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

GÜNCELLEME: .E.g (yorumlarda persons[0] önerdiği gibi) giriş JSON bir dizidir Çözüm Örneğin. JSON şuna benzer:

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

Ve ayrıştırma kod şuna benzer: sizin örnek kod için

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

+1 ;-) –

+3

Ve JSON değiştirmeden soruna geçici çözüm için: 'AutoBeanCodex.decode (fabrika, Result.class; "{\" kişiler \ ":" + json + "}") getPersons() ' –

+0

Bu benim otobamda kullandığım teknik. Ama sanırım @ThomasBroyer tarafından yapılan tekniği uyguluyorum. – Jonathan

İlgili konular