Para facilitar el uso de servicios REST utilzamos JavascriptObject overlay types, los cuales nos permiten obtener un objeto a partir de una cadena JSON. Los overlay types sólo permiten ciertos tipos de datos como parámetros o valores de retorno. Entonces, para obtener un Map a partir de una cadena JSON como la siguiente, podemos utilizar la clase JSOHelper del framewrok SmartGwt:
{“id”:”menu1″,”opciones”:{“key1″:”value1″,”key2″:”value2″,”key3″:”value3”}}
tendríamos que hacerlo de la siguiente manera:
public class Menu extends JavaScriptObject{ public final native String getId()/*-{return this.id}-*/; public final native JavaScriptObject getNativeOpciones()/*-{return this.opciones}-*/; public final LinkedHashMap<String,String> getOpciones(){ LinkedHashMap<String,String> linkedMap=new LinkedHashMap<String,String>(); Map map=JSOHelper.convertToMap(getNativeOpciones()); Iterator iterator=map.entrySet().iterator(); while(iterator.hasNext()){ Map.Entry item=(Map.Entry)iterator.next(); linkedMap.put((String)item.getKey(),(String)item.getValue()); } return linkedMap; } }