如何获取Jayway JsonPath返回数组中各子元素对应的完整路径
你可以通过开启 Jayway JsonPath 的 AS_PATH_LIST 配置选项直接获取匹配节点的路径数组,无需自行解析结构。
具体实现步骤
- 导入相关类:
import com.jayway.jsonpath.{Configuration, JsonPath, Option}
- 构造开启路径返回的配置:
val pathConfig = Configuration.builder() .options(Option.AS_PATH_LIST) .build()
- 执行原查询语句即可得到路径列表:
// 返回的是Java类型的路径列表,可根据需要转换为Scala集合 val bookPaths: java.util.List[String] = JsonPath.read(myData, "$.libraries[*].genres[*].books[*]", pathConfig)
格式适配说明
默认返回的路径格式为 $['libraries'][0]['genres'][1]['books'][0],如果你需要问题示例中的 $.libraries(0).genres(1).books(0) 格式,只需做简单的字符串替换即可:
import scala.jdk.CollectionConverters._ val formattedPaths = bookPaths.asScala.map { path => path.replace("['", ".") .replace("']", "") .replace("[", "(") .replace("]", ")") }.toList
替换后输出的路径就和你要求的格式完全一致。
内容的提问来源于stack exchange,提问作者gollyzoom
相关产品推荐
相关产品推荐

