JSONAta 获取包含值的键的名称

发布于 2025-01-20 10:26:56 字数 817 浏览 1 评论 0原文

我正在使用jsonata库通过一个复杂的对象。如果键匹配特定条件,我需要获取钥匙的名称。

{
"properties": {
                "WTID": {
                    "pattern": "reference-data",
                    "type": "string"
                },
                "VCRSID": {
                    "pattern": "reference-data",
                    "type": "string"
                },
                "VMSID": {
                    "pattern": "reference-data",
                    "type": "string"
                },
                "DroneID": {
                    "pattern": "unique-data",
                    "type": "string"
                }
            }
}

我想要的所有名称的键都等于参考数据,即wtid,vcrsid,vmsid。如何使用JSONATA查询如何进行操作。

到目前为止,我已经尝试使用以下查询:

**[$contains(pattern, 'reference-data')]

但这仅返回值,我无法参考任何键。

I am using JSONAta library to pass through a complex object. I need to get the name of the keys if it matches a certain condition.

{
"properties": {
                "WTID": {
                    "pattern": "reference-data",
                    "type": "string"
                },
                "VCRSID": {
                    "pattern": "reference-data",
                    "type": "string"
                },
                "VMSID": {
                    "pattern": "reference-data",
                    "type": "string"
                },
                "DroneID": {
                    "pattern": "unique-data",
                    "type": "string"
                }
            }
}

I want all the name of the keys whose pattern is equal to reference-data i.e. WTID, VCRSID, VMSID. How is it possible to do using JSONAta Query.

So far I have tried using below query:

**[$contains(pattern, 'reference-data')]

but this returns only the values and I am unable to refer to any of the keys.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

迷雾森÷林ヴ 2025-01-27 10:26:56

如果您期望[“ wtid”,“ vcrsid”,“ vmsid”]因此,这就是解决方案:

$keys(properties) ~> $filter(function ($key) {
  $lookup(properties, $key).pattern = "reference-data"
})
  1. 获取properties object的所有键作为数组。
  2. 浏览每个键,查找$键 in 属性对象的值。
  3. 仅当模式从对象从上一步等于“ Reference-data”

您还可以使用interactive version of this solution here.

If you're expecting ["WTID", "VCRSID","VMSID"] as a result, then this is the solution:

$keys(properties) ~> $filter(function ($key) {
  $lookup(properties, $key).pattern = "reference-data"
})
  1. Get all the keys of the properties object as an array.
  2. Go through each key, lookup for the value at $key inside properties object.
  3. Return the key only if pattern property from the object from the previous step equals to "reference-data"

You can also play with the interactive version of this solution here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文