LINUX.ORG.RU

GWT json разбор двухмерного массива


0

1

Ситуация такая. Есть 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»]]

Ответ на: комментарий от bga_

Не стоит так писать. получишь exception в IE. зануляй

Честно говоря не очень силён в js, а как лучше написать? Не совсем ясно, что значит «зануляй»

Дык, getJson полностью закомменчен.

Это не комментарии это JSNI

Я уже себе весь моск сломал этими жаба скриптам, я наивно полагал что в GWT не нужно будет ими пользоваться

andreykyz ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.