从具有 "key1": "value1;value2;value3" 样式编码的单个 JSON API Return 创建 3 个多个 JSON 对象

Create 3 Multiple JSON Objects from a single JSON API Return that has "key1": "value1;value2;value3" style encoding

我一直在四处寻找,找不到一个简单的答案来解决我的问题,我已经看到了如何使用 LINQ to JSON 进行搜索和处理(这对我的需求来说似乎很复杂).

我正在使用 n8n.io 尝试执行“WebHook Post” -> 函数调用 -> 拆分为批处理 (1) -> API 调用

我有一个 JSON 像这样的对象

$json = {
  "_id": "627bd2378b8bbe5c27a23669",
  "firstName": "John;Maria;Bruce",
  "lastName": "Doe;Phenix;Mclean",
}

我需要将这些作为 3 个单独的 JSON 对象发送到另一个 webhook

我正在尝试找出一个 for 循环,它可以将 $json 转换为 $json[0]$json[1]$json[2]

在哪里

$json[0] = {
  "firstName": "John",
  "lastName": "Doe",
}

$json[1] = {
  "firstName": "Maria",
  "lastName": "Phenix",
}

$json[2] = 
  "firstName": "Bruce",
  "lastName": "Mclean",
}

我很难找到从 A 到 B 的最简单和最快捷的方法任何建议 n8n.io 允许我从上一步中获取 $json.body 并使用一个 javascript 函数?

希望有一些内置方法可以在 Javascript 中的 for 循环内的一两步内处理此翻译。

//iterate through the combined JSON Object
for (var k of $json) {
  //grab the row and split the string into 3 
  String.split($json[k]);
  //Create a $newObj with a full set of data in each index
}
return $newObj

我对 n8n 不熟悉,但如果你可以使用 javascript 来处理 $json,那么你可以拆分特定属性的键,然后用 for 循环将它们连接回去,如下所示:

const firstNames = $json.firstName.split(';');
const lastNames = $json.lastName.split(';');
const result = [];

for (let i = 0; i < firstNames.length; i++) {
  result.push({firstName: firstNames[i], lastName: lastNames[i]})  
}

以上代码假定 $json 中的 firstNamelastName 具有相同数量的分号分隔值。如果两者之一可以比另一个有更多的值,那么我建议使用 Math.max 找到具有最多值的那个并在 for 循环条件

中使用那个

非常感谢@metdodrbic 为我指明了正确的方向。

他的代码 100% 有效

我确实不得不将 $json 编辑为 $json.body,因为 n8n.io returns 来自上一步的 JSON 对象的特殊方式进入“功能”块

const firstNames = $json.body.firstName.split(';');
const lastNames = $json.body.lastName.split(';');
const result = [];

for (let i = 0; i < firstNames.length; i++) {
  result.push({firstName: firstNames[i], lastName: lastNames[i]})  
}