如何使用 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'
}
我在使用 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'
}