GSON只是从Json数据中读取JsonObject树不起作用

got*_*ch4 4 gson

我正在使用GSON进行项目.特别是我使用此代码生成JSON字符串:

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

        cmdobj.add("arg", args);

        String cmdstr = cmdobj.toString();
Run Code Online (Sandbox Code Playgroud)

它产生的东西如下:

{"cmd":"HANDSHAKE","arg":{"protocol":"syncmanager","serverName":"12345678910"}}
Run Code Online (Sandbox Code Playgroud)

然后在客户端机器上读取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();
Run Code Online (Sandbox Code Playgroud)

问题是应该包含已解析对象的jsobj不包含任何内容(如果我执行toString()print {}).为什么这个?我只想要另一边的JSonObject树,而不是对象序列化.有线索吗?

alp*_*ian 7

JsonObject jsobj = new Gson().fromJson(cmdstr, JsonObject.class)
Run Code Online (Sandbox Code Playgroud)

将尝试从字符串构建一种类型的JsonObject - 您的字符串显然不是.

我想你想要做的是获得原始的解析树 - 你可以这样做:

JsonObject jsobj = new JsonParser().parseString(cmdstr);
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅