2012-08-22 39 views
2

我有一個JSON地圖,如:GWT Autobean食品閱讀地圖

{ "element":"value","element2":"value2",...} 

與這兩個鍵和值的字符串。我嘗試用autobean閱讀它,並且發現奇怪的例外。它應該是直截了當的,不應該?

我得到的錯誤是:

[ERROR] [project_name] - The java.util.Map parameterization is not simple, but the getConf method does not provide a delegate 

我看地圖那樣:

final String jsObject = GeneralContextNativeReader.read("globalConf"); 
GlobalConfFactory globalConfFactory = GWT.create(GlobalConfFactory.class); 
Map<String, String> globalConf = AutoBeanCodex.decode(globalConfFactory, Map.class, jsObject).as(); 

和工廠被定義爲:

public interface GlobalConfFactory extends AutoBeanFactory { 
    AutoBean<Map<String, String>> globalConf(); 
} 

什麼是錯的接着就,隨即 ?

回答

1

AFAIK MapsLists和其他非簡單對象只能是引用類型而不是值類型。有關更多詳情,請參閱here
代碼更改爲這應該使其工作:

public interface Data { 
    public Map<String,String>> getGlobalConf(); 
} 

public interface DataFactory extends AutoBeanFactory { 
    AutoBean<Data> getData(); 
} 

final String jsObject = GeneralContextNativeReader.read("globalConf"); 
DataFactory dataFactory = GWT.create(DataFactory.class); 
Data data = AutoBeanCodex.decode(dataFactory, Data.class, jsObject).as(); 
Map<String, String> globalConf = data.getGlobalConf(); 

你的JSON字符串必須看起來類似的東西:

{"globalConf":{ "element":"value","element2":"value2",...}} 
+0

工作順利,謝謝! –

0

如果您AutoBean界面包含一個靜態方法也會發生這種情況(新在Java 8中)。