GSON无法从Json数据中读取JsonObject树结构

4

我正在使用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()则打印{})。为什么会这样?我只想要在另一侧拥有的JSonObject树,而不是对象序列化。有什么线索吗?

1个回答

7
JsonObject jsobj = new Gson().fromJson(cmdstr, JsonObject.class)

我会尝试从字符串中构建一个JsonObject类型,但是你的字符串显然不是这种类型。

我认为你想要做的是获取原始解析树 - 你可以像这样做:

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

更多细节请参见此链接


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接