Ситуация такая. Есть json объект про который заведомо известно, что он содержит 2-х мерный массив String'ов. т.е. мне нужно из JavaScriptObject получить String[][].
Метод которым я получаю json объект:
public native static void getJson(int requestId, String url,
ValidatorGui handler) /*-{
var callback = "callback125";
// [1] Create a script element.
var script = document.createElement("script");
script.setAttribute("src", url);
script.setAttribute("type", "text/javascript");
// [2] Define the callback function on the window object.
window[callback] = function(jsonObj) {
// [3]
handler.@ru.devhead.SQLQuiz.client.ValidatorGui::handleJsonResponse(Lcom/google/gwt/core/client/JavaScriptObject;)(jsonObj);
window[callback + "done"] = true;
}
// [4] JSON download has 1-second timeout.
setTimeout(function() {
if (!window[callback + "done"]) {
handler.@ru.devhead.SQLQuiz.client.ValidatorGui::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"];
}, 1000);
// [6] Attach the script element to the document body.
document.body.appendChild(script);
}-*/;
public void handleJsonResponse(JavaScriptObject jso) {
if (jso == null) {
displayError("Couldn't retrieve JSON");
return;
}
//В этом месте все и происходит:
String[][] JAVA_ARRAY = (((JSONRequester) jso).getThis());
}
класс к которому я привожу чуть выше JavaScriptObject jso
public class JSONRequester extends JavaScriptObject {
protected JSONRequester() {}
public final native String[][] getThis() /*-{ return this; }-*/;
}
то, как выглядит сам массив:
[[«f»,«d»,«g»],[«ads»,«fsdf»,«fsdf»],[«5345345»,«45345345»,«534534»]]
Но в итоге в JAVA_ARRAY ничего не передается и сыпятся непонятные ошибки(о которых предупреждает гугль, т.к. отладка в jsni не работает ).
еще раз привожу json из которого нужно получить String[][] [[«f»,«d»,«g»],[«ads»,«fsdf»,«fsdf»],[«5345345»,«45345345»,«534534»]]