我正在使用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()print {})。为什么这个?我只想要另一边的JSonObject树,而不是对象序列化。有线索吗?
答案 0 :(得分:6)
JsonObject jsobj = new Gson().fromJson(cmdstr, JsonObject.class)
将尝试从字符串构建一种类型的JsonObject - 你的字符串显然不是。
我认为你想要做的就是获得原始的解析树 - 你可以这样做:
JsonObject jsobj = new JsonParser().parseString(cmdstr);
有关详细信息,请参阅this。