我需要通过list1的属性过滤list2的值,如下所示:
JSON:
{
"list1": [
{"b":1, "list2": [{"a":1},{"a":2},{"a":3}]},
{"b":2, "list2": [{"a":1},{"a":2},{"a":3}]},
{"b":3, "list2": [{"a":1},{"a":2},{"a":3}]}
]
}JSONata:
{
"result": $$.list1.{
"v": list2[a=b].{
"v":a
}
}
}问题是-我不知道如何在filter list2[a=b]中引用list1的b属性
https://try.jsonata.org/dxPC5s-zM
预期结果为:
{
"result": [
{"v":1},
{"v":2},
{"v":3}
]
}我知道示例是“愚蠢的”,但它只是说明了问题。我想知道是否可以使用一些临时变量来解决这个问题?
谢谢!
发布于 2020-08-05 23:54:46
好的,我找到了temp的解决方案。变量:
JSONata:
{
"result": $$.list1.(
$b := b; /* temp var. */
{
"v": list2[a=$b].{
"v":a
}
})
}发布于 2020-08-10 18:15:50
您可以使用'parent‘运算符来引用此'outside’属性。因此,如果您处于list2数组的上下文中,则可以使用以下命令引用list1的'b‘属性:
list1.list2[a = %.b]
https://stackoverflow.com/questions/63262652
复制相似问题