我有一个可能会更改密钥的 JSON 结构:
{
"status": "ONLINE",
"meter": "A123",
"date": "2024-02-28T14:51:12"
}
或
{
"status": "ONLINE",
"crew": "XMS-858",
"date": "2024-02-28T15:05:19"
}
我需要帮助构建 JSONPath 表达式,以获取与 'meter' 键或 'crew' 键对应的值,具体取决于 json 中存在的值
我试过这个:
$.[?(@.meter || @.crew)]
它有效(OR表达式),但它让我完整地了解了找到密钥的位置
[
{
"status": "ONLINE",
"crew": "XMS-858",
"date": "2024-02-28T15:05:19"
}
]
所以,我尝试了一种不同的方法。这个效果更好:
$.['meter', 'crew']
但是这样我就得到了键值对
{
"crew": "XMS-858"
}
我只需要价值,我尝试了很多不同的方法但没有成功,
有人有主意吗?
jsonpath $.['meter', 'crew']
但是这样我就得到了键值对
json { "crew": "XMS-858" }
这不是我所期望的,也不是我的实现所做的(https://json-everything.net/json-path。
迂腐地,
$.['meter', 'crew']
无效:您需要删除.
:
$['meter', 'crew']
规范 RFC 9535 最近发布,大多数实现尚未采用它。因此,许多实现都支持自己的风格,因此您需要与他们核实具体细节。
在我的实现(合规)中,这会返回
[
{
"Value": "A123",
"Location": "$['meter']"
}
]
(我的实现给出了值及其在数据中出现的位置。)