我正在尝试构建一个JSONPath 查询,它将测试两个或多个路径的存在。
让我们考虑以下示例文档:
{
"firstName": "John",
"lastName" : "doe",
"age" : 26,
"address" : {
"streetAddress": "naist street",
"city" : "Nara",
"postalCode" : "630-0192"
},
"phoneNumbers": [
{
"type" : "iPhone",
"number": "0123-4567-8888"
},
{
"type" : "home",
"number": "0123-4567-8910"
}
]
}
Run Code Online (Sandbox Code Playgroud)
到目前为止我已经发现:
$..[firstName,lastName,type]
并从整个文档中获取所有这些元素。
但是,我需要的是检查两个不同的路径,例如:
$.firstName
$.address.city
Run Code Online (Sandbox Code Playgroud)
这可以通过单个 JSONPath 查询来完成吗?我不能写这样的东西:
$.[firstName,address.city]
Run Code Online (Sandbox Code Playgroud)
使用 XML 和 XPath 我可以写:
/person/firstname | /person/address/city
Run Code Online (Sandbox Code Playgroud)
并获得所有匹配 XML 元素的并集。
我可以对 JSONPath 做同样的事情吗?
我认为原始 JSONPath 中最接近的是使用递归下降和联合,即
\n$..[\'firstName\',\'city\']\nRun Code Online (Sandbox Code Playgroud)\nGoessner 实施将回归
\n[\n "John",\n "Nara"\n]\nRun Code Online (Sandbox Code Playgroud)\nKubernetes JSONPath支持 union 运算符的扩展,允许
\n[\xe2\x80\x98metadata.name\xe2\x80\x99, \xe2\x80\x98status.capacity\xe2\x80\x99]\nRun Code Online (Sandbox Code Playgroud)\n其中name和是和capacity的成员metadatastatus。
JSON匹配是 JSONPath 的变体,最初基于 Kubernetes JSONPath 解析器,支持完全独立的路径的并集,例如
\n[employee[5].name, company.name, wageTiers[compensation > 10000]]\nRun Code Online (Sandbox Code Playgroud)\nJSONMatch 在go中可用,我相信javascript也可用。
\n少数 JSONPath 实现支持用点分隔的两个文字的方括号表示法和用点分隔且不带引号的两个文字的方括号表示法。
\njsoncons C++ 库(自 0.161.0 起)支持完全独立的路径与表示法的 JSONPath 并集
\n$..[\'firstName\',@.address.city]\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
8387 次 |
| 最近记录: |