解决这个简单的(?)JSONPath

Solving this simple(?) JSONPath

我是这个话题的新手,但我希望你能帮助我。我想不出一个正确的 JSON 表达式来解决我的问题。

给定 JSON 结构(来自 zigbee2mqtt):

{
  "message" : "announce",
  "meta" : {
    "friendly_name" : "Lamp1"
  },
  "type" : "device_announced"
}

我在尝试什么:

if $.type == 'device_announced' then return the friendly_name

在这种情况下是

Lamp1

如果我没理解错的话,你正在寻找这样的表达式:

$[?(@.type=='device_announced')].meta.friendly_name

因此,我们在等于搜索字符串的 type 上过滤根集合,然后向下钻取到 friendly_name。您可以在线测试 here.

注意:某些实现要求您将 JSON 包装在数组 [ ] 中以允许这种过滤。