如何使用Gson库将JSON中的ids提取为Java数组?
使用Gson提取JSON中ids为Java字符串数组的类型不匹配问题
场景说明
从POST请求中获取到如下JSON字符串,需要使用com.google.gson库将其中的ids字段提取为Java String[]数组:
{"description":"studentIDs", "ids": ["123", "456", "789"]}
错误代码及问题
尝试了以下代码,但出现类型不匹配错误:
JsonObject jsonObject = JsonParser.parseString(jsonString).getAsJsonObject(); JsonArray arrJson = jsonObject.getAsJsonArray("ids"); String[] arr = new String[arrJson.size()]; for(int i = 0; i < arrJson.size(); i++) arr[i] = arrJson.get(i); //Type mismatch: cannot convert from JsonElement to String
问题出在arrJson.get(i)返回的是JsonElement类型,无法直接赋值给String类型的数组元素,必须显式转换为字符串。
解决方法
方法1:手动转换元素类型
在循环中调用JsonElement的getAsString()方法,将每个JSON元素转为字符串:
JsonObject jsonObject = JsonParser.parseString(jsonString).getAsJsonObject(); JsonArray arrJson = jsonObject.getAsJsonArray("ids"); String[] arr = new String[arrJson.size()]; for(int i = 0; i < arrJson.size(); i++) arr[i] = arrJson.get(i).getAsString(); // 显式转换为String
方法2:使用Gson直接转换数组(更简洁)
借助Gson实例的fromJson()方法,直接将JsonArray转换为String[],无需手动循环:
JsonObject jsonObject = JsonParser.parseString(jsonString).getAsJsonObject(); JsonArray arrJson = jsonObject.getAsJsonArray("ids"); Gson gson = new Gson(); String[] arr = gson.fromJson(arrJson, String[].class);
内容的提问来源于stack exchange,提问作者Lyrk
相关产品推荐
相关产品推荐

