首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jsonata按"outside“属性过滤

jsonata按"outside“属性过滤
EN

Stack Overflow用户
提问于 2020-08-05 17:52:52
回答 2查看 146关注 0票数 0

我需要通过list1的属性过滤list2的值,如下所示:

JSON:

代码语言:javascript
复制
{
  "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:

代码语言:javascript
复制
{
    "result": $$.list1.{ 
        "v": list2[a=b].{
            "v":a
        }
    }
}

问题是-我不知道如何在filter list2[a=b]中引用list1b属性

https://try.jsonata.org/dxPC5s-zM

预期结果为:

代码语言:javascript
复制
{
  "result": [
    {"v":1},
    {"v":2},
    {"v":3}
  ]
}

我知道示例是“愚蠢的”,但它只是说明了问题。我想知道是否可以使用一些临时变量来解决这个问题?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2020-08-05 23:54:46

好的,我找到了temp的解决方案。变量:

JSONata:

代码语言:javascript
复制
{
    "result": $$.list1.(
        $b := b; /* temp var. */
        { 
           "v": list2[a=$b].{
              "v":a
        }
    })
}
票数 0
EN

Stack Overflow用户

发布于 2020-08-10 18:15:50

您可以使用'parent‘运算符来引用此'outside’属性。因此,如果您处于list2数组的上下文中,则可以使用以下命令引用list1的'b‘属性:

list1.list2[a = %.b]

请参阅https://docs.jsonata.org/path-operators#-parent

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63262652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档