1. 概述
在本快速教程中,我们将探讨如何使用JsonPath对JSON文档中的对象和数组进行计数。
JsonPath提供了一种标准机制来遍历JSON文档的特定部分。我们可以说JsonPath之于JSON就像XPath之于XML。
2. 所需依赖
我们使用以下JsonPath Maven依赖项,当然,它在Maven Central上可用:
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
<version>2.4.0</version>
</dependency>
3. 示例JSON
以下JSON将用于说明示例:
{
"items": {
"book": [
{
"author": "Arthur Conan Doyle",
"title": "Sherlock Holmes",
"price": 8.99
},
{
"author": "J. R. R. Tolkien",
"title": "The Lord of the Rings",
"isbn": "0-395-19395-8",
"price": 22.99
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
},
"url": "mystore.com",
"owner": "tuyucheng"
}
4. 统计JSON对象
根元素由美元符号“$”表示。在下面的JUnit测试中,我们使用JSON字符串和我们要计算的JSON路径“$”调用JsonPath.read():
public void shouldMatchCountOfObjects() {
Map<String, String> objectMap = JsonPath.read(json, "$");
assertEquals(3, objectMap.keySet().size());
}
通过计算结果Map的大小,我们可以知道JSON结构中给定路径上有多少元素。
5. 统计JSON数组大小
在下面的JUnit测试中,我们查询JSON以查找items元素下包含所有book的数组:
public void shouldMatchCountOfArrays() {
JSONArray jsonArray = JsonPath.read(json, "$.items.book[*]");
assertEquals(2, jsonArray.size());
}
6. 总结
在本文中,我们介绍了一些有关如何对JSON结构中的元素进行计数的基本示例。
你可以在官方JsonPath文档中探索更多路径示例。
与往常一样,本教程的完整源代码可在GitHub上获得。
Show Disqus Comments
Post Directory
扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章