如何在RestAssured中使用GPath sum()对JSONObject的字段值求和
马哈拉施特拉邦新冠死亡病例总数统计实现方案
错误原因
- 你使用的原写法不生效,是因为
Maharashtra.districtData为键值对结构的JSONObject,而非JSON数组,collect方法无法直接作用于对象结构,需要先提取对象的所有value值(即各区域的疫情数据集合)再做聚合计算。
正确实现方式
方案1:使用JsonPath通配符(推荐,兼容性最好)
Java生态最常用的JayWay JsonPath库原生支持通配符匹配所有子节点,直接求和即可,代码如下:
// jsonResponse为接口返回的完整JSON字符串 int totalDeceased = JsonPath.read(jsonResponse, "$.Maharashtra.districtData.*.deceased.sum()");
表达式说明:
*通配符匹配districtData下所有子节点的值(即所有区域的数据对象)- 直接提取所有子节点的
deceased字段后调用sum()函数求和
方案2:适配Groovy风格collect写法
如果你使用的JsonPath实现支持Groovy表达式语法,只需在原写法基础上补充调用values()方法提取对象所有值即可:
int value=jsonPath.get("Maharashtra.districtData.values().collect{it.deceased}.sum()");
内容的提问来源于stack exchange,提问作者nikhil udgirkar
相关产品推荐
相关产品推荐

