2012-11-30 49 views
7

我一直在嘗試評估GWT Autobean功能,將JSON對象解碼/編碼爲REST調用的域對象。GWT Autobean - 如何處理列表?

繼例如: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轉換Person對象列表。

這將是有益的,如果有人有這樣的例子?

謝謝!

回答

17

那麼我能想到的唯一方法就是創建一個特殊的autobean,它將具有List<Person>屬性。例如:

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

而且例如JSON字符串:

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

UPDATE:當輸入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( factory,Result.class;「{\」persons \「:」+ json +「}」)。getPersons()' –

+0

這是我在我的autobeans中使用的技術。但我想我會應用@ThomasBroyer製作的技術。 – Jonathan