GSON только для чтения дерева JsonObject из данных Json не работает - PullRequest
4 голосов
/ 11 мая 2011

Я использую GSON для проекта. В частности, я использую этот код для генерации строк JSON:

Gson gs = new Gson();
        JsonObject cmdobj = new JsonObject();
        cmdobj.addProperty("cmd", cmd);

        cmdobj.add("arg", args);

        String cmdstr = cmdobj.toString();

, который производит что-то вроде:

{"cmd":"HANDSHAKE","arg":{"protocol":"syncmanager","serverName":"12345678910"}}

затем на клиентской машине это читает данные json:

String cmdstr = readCommand(this.is);
        Gson gs = new Gson();
        JsonObject jsobj = gs.fromJson(cmdstr, JsonObject.class);
        JsonElement cmd = jsobj.get("cmd");
        JsonObject args = jsobj.get("arg").getAsJsonObject();

проблема в том, что jsobj, который должен содержать анализируемый объект, не содержит ничего (если я делаю toString () prints {}). Почему это? Мне просто нужно дерево JSonObject, которое у меня было на другой стороне, а не сериализация объектов. Есть какие-нибудь подсказки?

1 Ответ

6 голосов
/ 11 мая 2011
JsonObject jsobj = new Gson().fromJson(cmdstr, JsonObject.class)

попытается построить тип JsonObject из строки, которой ваша строка явно не является.

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

JsonObject jsobj = new JsonParser().parseString(cmdstr);

См. это для более подробной информации.

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