我正在使用 Jsonata,但我被困在中间的某个地方。基本上,我从 JSON 收到一个名为 EMAIL 的属性:“[email protected]|2|bb@bb-com|4|” 。在这种格式中,我需要使用 Jsonata 将其转换为
尝试了很多解决方案,但主要得到了 5 个对象哈哈。如果我能得到一些帮助,我将不胜感激。此外,电子邮件的数量并不总是相同,因此需要动态的东西。
输入“[电子邮件受保护]|2|bb@bb-com|4|”
输出
[ { "email":[email protected] "score":4 "position":1 }, { "email":[email protected] "score":2 "position":2 } ]
可能有多种方法可以解决这个问题,但我会在用“|”分割后使用reduce函数:
$split($, "|") ~> $reduce(function($accumulator, $item, $index) {(
$isEmailIndex := $index % 2 = 0;
$position := $index / 2 - $index % 2 + 1;
$isEmailIndex and $item
? $append($accumulator, { "email": $item, "score": $parts[$index+1], "position": $position })
: $accumulator;
)}, [])
在 Stedi Playground 上查看:https://stedi.link/EG3UGjw