如何使用 JsonPath 处理带有命名空间的 JSON

How to handle JSON with namespaces with JsonPath

我在使用 JsonPath 检查 json 字段前面的命名空间时遇到问题。我无法从 google 中找到任何内容,也无法查看现有问题或文档。我什么都没做。我有以下 json 片段:

{
  "_embedded" : {
    "bb:list" : [ {
      "id" : "id",
      "label" : "label",
      "description" : "description",
      "timezone" : "timezone",
      "postalAddress" : {
        "addressCountry" : "country",
        "addressLocality" : "city",
        "addressRegion" : "state",
        "postalCode" : "postal code",
        "streetAddress" : "street address"
      }
    } ]
  }
}

我正在尝试检查 bb:list 字段以查看其中有多少项。这个 JsonPath 表达式似乎不起作用:

"$._embedded.bb:list"

如果我删除 "bb:" 然后使用这个作品 "$._embedded.list" 所以它是 bb: 它似乎不喜欢。

所以事实证明我遇到的问题不是 JsonPath 表达式,或者根本不是 JsonPath。 Spring Boot 引入了 JsonPath,所以它全部编译并且看起来很好,但在运行时,它出于某种原因无法正常工作。我明确地将 JsonPath 添加到我的依赖项列表中,它神奇地开始工作了。

编辑:所以上面的修复不是永久性的。事实证明, JsonPath - Json-smart 的瞬态依赖使用的版本比 Spring-test 引入的版本更新(其中的几个瞬态依赖)。 我通过从 spring-starter-test 依赖项中添加对 json-smart 的排除来修复它:

testCompile('org.springframework.boot:spring-boot-starter-test'){
    exclude group: 'json-smart'
}