使用 JSONata 获取数组中的前 n 项

问题描述 投票:0回答:1

如何使用 JSONata 从 JSON 中获取具有最高值的前 5 个键?

假设我有这样的东西。它们的键不是按字母顺序排列的,但值是降序排列的,我只想显示前 5 个键和值:

[
 [
  {
   "key": A,
   "value": 310
  },
   "key": B,
   "value": 240
  },
   "key": C,
   "value": 110
  },
   "key": D,
   "value": 90
  },
   "key": E,
   "value": 60
  },
   "key": F,
   "value": 50
  },
   "key": G,
   "value": 30
  },
   "key": H,
   "value": 10
  }
 ]
]

我想要得到的是这样的:

[
  {
   "key": A,
   "value": 310
  },
   "key": B,
   "value": 240
  },
   "key": C,
   "value": 110
  },
   "key": D,
   "value": 90
  },
   "key": E,
   "value": 60
  }
]

谢谢!!!

json dictionary key jsonata
1个回答
0
投票

您可以使用位置变量绑定路径运算符来确定当前上下文项位于序列中的哪个位置,然后按该位置进行过滤。这将为您提供数组中的前

N
项。

例如,给定您的[清理后的]数据:

{
  "data": [
  {
   "key": "A",
   "value": 310
  },
  {
   "key": "B",
   "value": 240
  },
  {
   "key": "C",
   "value": 110
  },
  {
   "key": "D",
   "value": 90
  },
  {
   "key": "E",
   "value": 60
  },
  {
   "key": "F",
   "value": 50
  },
  {
   "key": "G",
   "value": 30
  },
  {
   "key": "H",
   "value": 10
  }
 ]
}

表达方式:

data#$i[$i<5]

会回来:

[
  {
    "key": "A",
    "value": 310
  },
  {
    "key": "B",
    "value": 240
  },
  {
    "key": "C",
    "value": 110
  },
  {
    "key": "D",
    "value": 90
  },
  {
    "key": "E",
    "value": 60
  }
]

工作示例:https://try.jsonata.org/LCvBc6KT_

© www.soinside.com 2019 - 2024. All rights reserved.