我使用GWT Dictionary從我的HTML-Page中讀取了一些var
。 var
看起來像這樣:
var test = {
"a" : "123",
"b" : "jg34l",
...
}
現在我通過AJAX調用新的內容爲我的JS變種。目前,我重寫這樣的:
public native void set(String key, String value) /*-{
$wnd["test"][key] = value;
}-*/;
public void onResponseReceived(Request request, Response response) {
JSONObject obj = (JSONObject) JSONParser.parseLenient(response.getText());
for (String key : obj.keySet()) {
JSONString val = (JSONString) obj.get(key);
set(key, val.stringValue());
}
}
正如你可以看到我得到一個JSON字符串。解析它。將其轉換爲JSONObject。採取每個鍵值對並使用JSNI方法來設置對。
必須有一個更簡單的方法來做到這一點?!我想簡單地說:$ wnd [「test」] = myJsonObject
請幫助我,因爲這是性能關鍵的步驟(多達1000個鍵值對)。
是的這個作品,謝謝。但它有問題與GWT詞典:(字典不承認,有新的價值。用我的方法從上面它的作品,我認爲我必須以某種方式「重新加載」字典 – 2012-07-09 18:45:02
你是什麼意思與「字典doesn 't認識到有新的價值「?順便說一句,你也可以在字典中使用JSO – 2012-07-09 22:01:03
問題是:例如,以下代碼在我的HTML文件中:'var test = {...}'然後我使用'Dictionary dict = Dictionary.getDictionary(「test」)'獲取'test'的內容,然後用''wnd ['test'] = jso;'用'JavaScriptObject jso'替換'test'的內容。 :''dict.get(「key」)''返回舊值,BUT:'alert($ wnd ['test'] ['key'])'返回新的值。我的方法從我的帖子上面看,一切都按預期工作,看到我的帖子下面的解決方案(很簡單:不要覆蓋'$ wnd ['test']',而是創建一個新的'var'並使用它。) – 2012-07-10 02:50:54