使用 Jsonata 我需要将字符串转换为以下对象数组

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

我正在使用 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 } ] 

json jsonata
1个回答
0
投票

可能有多种方法可以解决这个问题,但我会在用“|”分割后使用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

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