Java JsonPath获取数组长度咨询(附JSON示例与解析代码)
获取JSON数组长度的JsonPath解决方案
针对你给出的JSON结构和已有的Java解析代码,这里有几种用JsonPath获取目标数组长度的实用方法,咱们一步步来:
首先明确你的目标数组在JSON中的路径:$.hello.hello —— 这个路径指向的就是JSON里包含两个对象的那个数组。
1. 确保引入JsonPath依赖
如果你的项目用Maven,需要在pom.xml中加入Jayway JsonPath的依赖(这是Java生态里最常用的JsonPath实现):
<dependency> <groupId>com.jayway.jsonpath</groupId> <artifactId>json-path</artifactId> <version>2.8.0</version> <!-- 建议使用最新稳定版 --> </dependency>
2. 直接通过JsonPath表达式获取长度
你已经解析得到了document对象,接下来可以直接用JsonPath的内置函数快速获取数组长度:
import com.jayway.jsonpath.JsonPath; // 从已有的document对象中查询数组长度 int arrayLength = JsonPath.read(document, "$.hello.hello.length()"); // 或者用size(),Jayway JsonPath同时支持这两种写法 // int arrayLength = JsonPath.read(document, "$.hello.hello.size()"); System.out.println("目标数组的长度是:" + arrayLength); // 输出结果为2
这里的$.hello.hello.length()表达式会直接定位到目标数组,然后返回它的元素个数,非常简洁高效。
3. 先获取数组再取长度(更灵活的方式)
如果之后还需要对数组元素进行遍历、提取等操作,也可以先把数组转换成Java集合,再调用size()方法:
import com.jayway.jsonpath.JsonPath; import java.util.List; // 获取整个数组对应的List对象 List<Object> targetArray = JsonPath.read(document, "$.hello.hello"); // 集合的大小就是数组的长度 int arrayLength = targetArray.size();
这种方式的好处是,拿到targetArray后可以直接进行后续的业务操作,适合需要处理数组元素的复杂场景。
需要注意:不同的JsonPath实现可能对函数名称有细微差异,但Jayway JsonPath同时兼容length()和size(),大部分主流实现也都支持这两种写法。
内容的提问来源于stack exchange,提问作者user6671584




