加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用GSON将字符串解析为JsonObject会产生IllegalStateException

发布时间:2020-12-16 18:41:34 所属栏目:百科 来源:网络整理
导读:我有以下代码: JsonParser parser = new JsonParser();System.out.println("gson.toJson: " + gson.toJson(roomList));JsonObject json2 = parser.parse("{"b":"c"}").getAsJsonObject();System.out.println("json2: " + json2);JsonObject json = pars
我有以下代码:

JsonParser parser = new JsonParser();
System.out.println("gson.toJson: "  + gson.toJson(roomList));
JsonObject json2 = parser.parse("{"b":"c"}").getAsJsonObject();
System.out.println("json2: " + json2);
JsonObject json = parser.parse(gson.toJson(roomList)).getAsJsonObject();
System.out.println("json: " + json);

它给了我以下输出:

gson.toJson: [{"id":"8a3d16bb328c9ba201328c9ba5db0000","roomID":9411,"numberOfUsers":4,"roomType":"BigTwo"},{"id":"402881e4328b9f3a01328b9f3bb80000","roomID":1309,{"id":"402881e4328ba09101328ba09edd0000","roomID":1304,{"id":"402881e4328bb83601328bb8af640000","roomID":4383,{"id":"402881e4328bb83601328bd271fe0001","roomID":5000,{"id":"402881e4328bb83601328bd2e0e30002","roomID":2485,{"id":"402881e4328bb83601328bd3087b0003","roomID":6175,{"id":"402881e4328bb83601328bd35a840004","roomID":3750,{"id":"402881e4328bb83601328bd366250005","roomID":370,{"id":"402881e4328bb83601328bd3807d0006","roomID":9477,"roomType":"BigTwo"}]
json2: {"b":"c"}
java.lang.IllegalStateException: This is not a JSON Object.

有人可以帮我解析我的Json字符串到JsonObject吗?我在http://jsonlint.com/中检查过我的json是有效的.

解决方法

这是因为由于JSON结构..
我必须首先将它放入JSONObject中,就像这样

JsonObject jsonObj = new JsonObject();
jsonObj.addProperty(ServerConstants.JSONoutput,gson.toJson(roomList));

然后我会反序列化

List<RoomData> roomList = gson.fromJson(jsonObj.get(CardGameConstants.JSONoutput).toString(),listType);
            for (RoomData roomData : roomList) {
                System.out.println(roomData.getRoomID());
            }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读