从具有 "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
中的 firstName
和 lastName
具有相同数量的分号分隔值。如果两者之一可以比另一个有更多的值,那么我建议使用 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]})
}
我一直在四处寻找,找不到一个简单的答案来解决我的问题,我已经看到了如何使用 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
中的 firstName
和 lastName
具有相同数量的分号分隔值。如果两者之一可以比另一个有更多的值,那么我建议使用 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]})
}