GSON 仅仅从 Json 数据中读取 JsonObject 树是行不通的

发布于 2024-11-06 03:25:40 字数 785 浏览 0 评论 0原文

我在一个项目中使用 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 树,而不是对象序列化。有什么线索吗?

I'm using GSON for a project. In particular I use this code to generate JSON strings:

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

        cmdobj.add("arg", args);

        String cmdstr = cmdobj.toString();

which produces something like:

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

then on a client machine this reads the json data:

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();

the problem is that jsobj that should contain the parsed object doesn't contain anything ( if I do toString() prints {} ). Why this? I just want the JSonObject tree that I had on the other side, not an object serialization. Any clues?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

猫卆 2024-11-13 03:25:40
JsonObject jsobj = new Gson().fromJson(cmdstr, JsonObject.class)

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

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

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

请参阅 了解更多详细信息。

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

will try and build a type of JsonObject from the string - which your string clearly isn't.

I think what you want to do is get the raw parse tree - which you can do like this:

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

See this for more details.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文