Десерализовать JSON (содержащий HashMap), возвращенный с сервера - PullRequest
2 голосов
/ 12 ноября 2010

Я использую клиент gwt.Мне нужно проанализировать / десериализовать JSON (содержит карту), возвращенный с сервера.Пример JSON: -

APPLICATIONSMAP: {

*
  -
  0: {
      o name: "App 1"
      o id: 0
  }
*
  -
  1: {
      o name: "App 2"
      o id: 1
  }
*
  -
  2: {
      o name: "App 3"
      o id: 2
  }

Как десериализовать JSON обратно в Java HashMap?

Спасибо, Сачин

Ответы [ 3 ]

1 голос
/ 12 ноября 2010

Я не уверен, что вы пытаетесь сделать правильный путь, но если вы действительно хотите десериализовать из JSON, вы можете использовать Джексона:

http://jackson.codehaus.org/

1 голос
/ 12 ноября 2010

Вы можете попробовать Типы наложения JavaScript , например, вот так:

public class OverlayExample implements EntryPoint {

    public static final class MyJsMap extends JavaScriptObject {

        protected MyJsMap() {}

        public native Object get(Object key) /*-{
            return this[key];
        }-*/;

        public native void put(Object key, Object val) /*-{
            this[key] = val;
        }-*/;
    }

    public void onModuleLoad() {

        final String text = "[{ 1 : 'x', 2 : 'y' }]";
        final MyJsMap map = asJsMap(text);
        System.out.println(map.get("1"));
    }

    private static native MyJsMap asJsMap(final String str) /*-{
        return eval(str)[0];
    }-*/;
}

Хорошо, это не совсем java.util.Map, но если вам это нужно, вы можете улучшить MyJsMap для реализации интерфейса java.util.Map.

Или - если вам нужен реальный java.util.HashMap - вы можете перебрать все значения и скопировать их в HashMap.В последнем случае, вероятно, проще использовать GSON , как рекомендует @The Elite Gentleman.

0 голосов
/ 12 ноября 2010

Если вы используете gwt, как говорит тэг, тогда почему вы делаете JSON самостоятельно?GWT имеет отличную поддержку сериализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...