从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
相关产品推荐
相关产品推荐

