Мне нужно получить значение от JSON.Он отлично работает с возвращаемыми объектами, но иногда я получаю только значение json - как логическое значение.И я не могу получить его от возвращенного json в GWT.
У меня есть функция getJson () JSNI для получения json, такая же, как в учебнике GWT StockWatcher.Я думаю, это релевантная часть этой функции, где возвращаемая строка преобразуется в JavaScriptObject?
// [2] Define the callback function on the window object.
window[callback] = function(jsonObj) {
// [3]
handler.@cz.metacentrum.perun.webgui.json.JsonClient::handleJsonResponse(Lcom/google/gwt/core/client/JavaScriptObject;)(jsonObj);
window[callback + "done"] = true;
}
// [4] JSON download has a timeout.
setTimeout(
function() {
if (!window[callback + "done"]) {
handler.@cz.metacentrum.perun.webgui.json.JsonClient::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 для работы с остальной частью моей программы?Я думаю, мне нужен какой-то оператор IF в секции [3] getJson (), чтобы решить, какой тип значения был возвращен и какую функцию обработчика вызвать.Может быть, создать объект вручную из возвращенного значения здесь и затем поместить его в существующий обработчик.Но я не уверен, как это сделать по-настоящему.Я попытался создать overlayType для логического значения, но это не помогло, поскольку возвращаемая строка все равно не анализируется как jso.
Спасибо за любую помощь.