首页 > 解决方案 > 解决这个简单的(?)JSONPath

问题描述

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

给定 JSON 结构(来自 zigbee2mqtt):

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

我正在尝试什么:

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

在这种情况下是

Lamp1

标签: jsonjsonpathopenhabjson-path-expression

解决方案


如果我理解正确,您正在寻找这样的表达式:

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

因此,我们在types 上过滤与搜索字符串相等的根集合,然后向下钻取到friendly_name。你可以在这里在线测试。

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


推荐阅读