我试图从以下 JSON 响应的 JSON 对象提取中找到已故计数的总和
https://api.covid19india.org/state_district_wise.json
上面的片段是json
"Maharashtra": {
"districtData": {
"Ahmednagar": {
"notes": "",
"active": 4206,
"confirmed": 275516,
"migratedother": 1,
"deceased": 5565,
"recovered": 265744,
"delta": {
"confirmed": 559,
"deceased": 4,
"recovered": 0
}
},
我想找到马哈拉施特拉邦死者的总数。我知道我们可以在JSONArray上使用collect,但这里是JSONObject。我试着跟随,但没有成功
int value=jsonPath.get("Maharashtra.districtData.collect{it.deceased}.sum()");
对象中有2个已死亡的键,我假设您只需要外部对象中的已死亡键。到目前为止我得到的最简单的解决方案。
@Test
void name3() {
Response res = RestAssured.given()
.get("https://api.covid19india.org/state_district_wise.json");
Map<String, ?> data = res.jsonPath().getMap("Maharashtra.districtData");
Set<String> keys = data.keySet();
int sum = keys.stream()
.mapToInt(key ->
JsonPath.read(res.asString(), String.format("$.Maharashtra.districtData.[\"%s\"].deceased", key)))
.sum();
System.out.println(sum); //126851
}
万一你不想用Java8流。
int sum = 0;
for (String key : keys) {
int deceased = JsonPath.read(res.asString(), String.format("$.Maharashtra.districtData.[\"%s\"].deceased", key));
sum += deceased;
}
我使用JSON path(com . jayway . JSON path . JSON path)
pom.xml
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
<version>2.6.0</version>
</dependency>
使现代化
我想出了另一个解决方案,即使用映射POJO。
@Test
void name4() {
Response res = RestAssured.given()
.get("https://api.covid19india.org/state_district_wise.json");
Configuration configuration = Configuration.builder()
.jsonProvider(new JacksonJsonProvider())
.mappingProvider(new JacksonMappingProvider())
.build();
List<DistrictData> data = JsonPath.using(configuration).parse(res.asString())
.read("$.Maharashtra.districtData.*", new TypeRef<>() {});
int sum = data.stream().mapToInt(DistrictData::getDeceased).sum();
System.out.println(sum); //126851
}
波霍
import lombok.Data;
import java.util.Map;
@Data
public class DistrictData {
private String notes;
private int active;
private int confirmed;
private int migratedother;
private int deceased;
private int recovered;
private Map<String, Object> delta;
}
我试图从json文件中获取一个对象数组,但遇到了一个问题。 我应该使用什么路径来获取项目中的所有项目(item0、item1、item2…)? 你能给我一个怎么做的建议吗。 Json 示例 从items对象中过滤item的最佳方法,但我不知道如何使用json路径。
问题内容: 我有一个与此对象类似的对象: 我试图得到它的长度,问题是返回5而不是3(这是它的总项目数)。该数组相对较长(有1000x2000个项目),并且必须每秒执行很多次。我如何才能更有效地获取商品数量? 问题答案: 显然,除了kieran的回答外,现代浏览器还具有功能。在这种情况下,您可以这样做:
问题内容: 这是我要在这里实现的目标: 从数据库获取文件名和ID的列表 在网络路径上搜索这些文件 存储未找到的文件的任何ID 在第二个数据库中搜索该ID 在网络路径上搜索这些文件 列出所有在两个位置均未找到文件的ID。 我遇到的问题是尝试使用我收集的结果中的文件名。 运行代码时,会显示从数据库收集的原始JSON数据,但是当尝试仅列出文件名时,我什么也没得到(甚至没有错误) 关于如何解决此问题并以一
问题内容: 我使用以下代码在Android中使用Gson比较了两个JSON对象: 有两种方法可以使用Gson以JSON格式获取两个对象之间的 差异 吗? 问题答案: 如果将对象反序列化为,则也可以使用Guava,可以用来比较两个生成的地图。 请注意,如果您关心元素的 顺序 ,则不会保留s 字段的顺序,因此此方法不会显示这些比较。 这是您的操作方式: 该程序输出: 在此处阅读更多有关结果对象包含的信
问题内容: 我使用以下代码在Android中使用Gson比较了两个JSON对象: 有两种方法可以使用Gson以JSON格式获取两个对象之间的 差异 吗? 问题答案: 如果将对象反序列化为,也可以使用Guava,则可以用来比较两个生成的地图。 请注意,如果您关心元素的 顺序 ,则不会保留s 字段的顺序,因此此方法不会显示这些比较。 这是您的操作方式: 该程序输出: 在此处阅读更多有关结果对象包含哪些
问题内容: 我正在struts上从事Web服务。现在我想要json对象使用其键值。然后,我必须发布类似数组的内容作为响应。我不知道如何在Struts中做到这一点。我知道如何在Servlet中执行此操作。因此,我使用的是我尝试过的以下代码,但我认为Struts中的代码有所不同。 因此,如何在Struts中做到这一点。还请告诉我如何解析json数组作为响应。 问题答案: 使用JSON无需将JSON发送