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

从API响应JSON数组提取无括号值失败,求助解决方案

问题:如何从JSON响应中获取纯数值ID而非数组?

API返回的JSON数据:

{
"first":0,
"rows":100,
"data":[
{
"id":326,
"tag":"QATA9",
"workNo":"qat12345"
}
],
"totalRecords":1
}

我的代码:

JsonPath jsonPathEvaluator = response.jsonPath();
wID = jsonPathEvaluator.get("data.id");
System.out.println("id is "+ wID);

String responseBody = response.getBody().asString();
int statusCode = response.getStatusCode();

当前输出结果为[326],但我需要仅获取纯数值326,请求解决该问题。


解决方案

问题出在你的JsonPath表达式上:data是一个数组(哪怕只有一个元素),当你使用data.id时,JsonPath会遍历数组里的所有对象,把它们的id收集成一个List返回,所以你看到的输出是带方括号的数组形式。

你可以用两种方式解决:

方法1:直接在JsonPath表达式中指定数组索引

修改你的表达式为data[0].id,直接定位到数组的第一个元素并获取它的id:

JsonPath jsonPathEvaluator = response.jsonPath();
// 直接获取数组第一个元素的id
Integer wID = jsonPathEvaluator.get("data[0].id");
System.out.println("id is "+ wID); // 输出:id is 326

String responseBody = response.getBody().asString();
int statusCode = response.getStatusCode();

方法2:从返回的List中提取第一个元素

如果你想保留原表达式,也可以把返回的结果当作List处理,取出第一个元素:

JsonPath jsonPathEvaluator = response.jsonPath();
// 先获取所有id的列表,再取第一个元素
List<Integer> idList = jsonPathEvaluator.get("data.id");
Integer wID = idList.get(0);
System.out.println("id is "+ wID); // 输出:id is 326

String responseBody = response.getBody().asString();
int statusCode = response.getStatusCode();

两种方法都能得到你需要的纯数值326,根据你的代码习惯选择即可。

内容的提问来源于stack exchange,提问作者Vinay

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:10:10