Java使用Gson遍历JSON对象时无法转换为JsonArray问题求助
解决Gson遍历用户数组的问题
嘿,我瞅了下你的代码和JSON结构,问题出在两个地方——JSON的格式细节,还有代码里的小错误,咱们一步步来修正:
问题根源分析
先看你拿到的JSON:
{"users":"[{"user_id": "100011", "name": "Tim Clark"}, {"user_id": "100083", "name": "Timmy Kent"}]"}
这里的users字段的值是被双引号包裹的字符串,而不是原生的JsonArray类型。所以你直接调用users.getAsJsonArray()会失败,Gson会识别这个字段为JsonPrimitive(字符串类型),而非数组。
另外你代码里还有个小坑:循环中重复定义了变量ua,这会导致编译错误,得换个变量名。
修正后的代码
Gson gson = new Gson(); JsonObject users = gson.fromJson(reader, JsonObject.class); // 1. 先提取users字段对应的字符串值 String usersStr = users.get("users").getAsString(); // 2. 将字符串解析为真正的JsonArray JsonArray usersArray = gson.fromJson(usersStr, JsonArray.class); // 遍历数组,注意变量名不要重复 for (JsonElement element : usersArray) { JsonObject userObj = element.getAsJsonObject(); String name = userObj.get("name").getAsString(); System.out.println(name); }
代码说明
- 先把外层JsonObject里的
users字符串取出来,再用Gson把它解析成JsonArray,这样就能正常遍历了 - 把循环里的变量名改成
element和userObj,避免重复定义的问题
这样运行后就能正确输出两个用户的名字啦~
内容的提问来源于stack exchange,提问作者user3740082
相关产品推荐
相关产品推荐

