我需要從json獲取價值。它對返回的對象完美地工作,但有時我只得到json值 - 就像布爾值。而且我無法從GWT中返回的json中獲取它。GWT - 如何處理返回的Json作爲原始類型
我有JSNI函數getJson()用於檢索與GWT教程StockWatcher相同的json。我想這是該函數的相關部分,返回的字符串轉換爲JavaScriptObject?
// [2] Define the callback function on the window object.
window[callback] = function(jsonObj) {
// [3]
[email protected]::handleJsonResponse(Lcom/google/gwt/core/client/JavaScriptObject;)(jsonObj);
window[callback + "done"] = true;
}
// [4] JSON download has a timeout.
setTimeout(
function() {
if (!window[callback + "done"]) {
[email protected]::handleJsonResponse(Lcom/google/gwt/core/client/JavaScriptObject;)(null);
}
// [5] Cleanup. Remove script and callback elements.
document.body.removeChild(script);
delete window[callback];
delete window[callback + "done"];
}, timeout);
它調用處理函數,它也基於教程。
public void handleJsonResponse(JavaScriptObject jso){
// if an ERROR
if (jso == null) {
this.module.onError();
return;
}
// OK
this.module.onFinished(jso);
}
問題是。當我收到布爾值時,它不會被解析爲JavaScriptObject,並最終導致由超時導致的onError()。
返回的json字符串看起來像:callback5(true);並在超時之前返回很長時間。所以我認爲,getJson()只是無法解析它?
我該如何解析它到JavaScriptObject中才能使用我的程序的其餘部分?我想我需要在getJson()的第[3]節中使用一些IF語句來決定返回哪個值類型來調用哪個處理函數。也許從這裏返回的值創建對象,然後將其添加到現有的處理程序。但我不確定如何正確執行此操作。 我試圖爲布爾創建overlayType,但它沒有幫助,因爲無論如何返回的字符串不會被解析爲jso。
感謝您的任何幫助。