You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 01:09:57