JSONPath 按对象中的值过滤 属性
JSONPath filter property by value in object
如何使用 JSON 路径过滤功能来查询子对象(没有数组)上 属性 的特定条件?
考虑这个 JSON 示例:
{
"queue": {
"size": 13
}
}
如果 .queue.size
大于 0,我想得到一个匹配项,如果它等于 0,则没有匹配项。
我尝试使用以下查询,但它不起作用:$.queue[?(@.size>0)]
。我不清楚为什么在这个例子中 $.queue[size]
确实可以正确返回值 13,但是如果我包含过滤语法,我永远不会得到匹配。
JSONPath 表达式似乎只适用于数组。参见 here and here。您的查询 $.queue[?(@.size>0)]
适用于:
{
"queue": [{
"size": 13
},
{
"size": 10
}]
}
一个小技巧可以是:
$..queue[?(@.size>0)]
唯一的缺点是,如果符合条件,它将更改子树中的每个对象。不仅在第一级。
如何使用 JSON 路径过滤功能来查询子对象(没有数组)上 属性 的特定条件?
考虑这个 JSON 示例:
{
"queue": {
"size": 13
}
}
如果 .queue.size
大于 0,我想得到一个匹配项,如果它等于 0,则没有匹配项。
我尝试使用以下查询,但它不起作用:$.queue[?(@.size>0)]
。我不清楚为什么在这个例子中 $.queue[size]
确实可以正确返回值 13,但是如果我包含过滤语法,我永远不会得到匹配。
JSONPath 表达式似乎只适用于数组。参见 here and here。您的查询 $.queue[?(@.size>0)]
适用于:
{
"queue": [{
"size": 13
},
{
"size": 10
}]
}
一个小技巧可以是:
$..queue[?(@.size>0)]
唯一的缺点是,如果符合条件,它将更改子树中的每个对象。不仅在第一级。