如何 JSON.parse Zapier 触发器中的数组?
How do I JSON.parse an array in a Zapier Trigger?
我正在尝试 JSON.parse 数组 "data." 我需要能够将数组作为根传递。
{
"data": [
{
"type": "name",
"id": "123"
}
]
}
响应应该看起来像这样只包含对象。 Zapier 似乎不能很好地处理数组。
{
"type": "name",
"id": "123"
}
难道我不能使用简单的脚本来完成工作吗?
编辑:
本质上,您需要在脚本中覆盖 post_poll
方法 (https://zapier.com/developer/documentation/v2/scripting/#polling),这样您就可以拦截 API 的响应。之后,您只需要 return 一个具有您想要的值的新对象。而不是 returning: {"data":[ {...}, {...}, ]},您只需要 return 数据的值。类似于:
xyz_post_poll: function(bundle){
var response = JSON.parse(bundle.response.content);
return response.data || [];
}
是的,您可以使用一个简单的脚本,Javascript 或 Python。单击现有触发器和操作之间的 +,然后添加一个操作,选择 Code by Zapier 作为应用程序。假设您的 JSON 是触发器的输出:
{
"data": [
{
"type": "name",
"id": "123"
}
]
}
Zapier 的代码将为您提供以下选项:
Setup Code by Zapier Run Javascript
如果对象数组 data
具有多个元素,则 Zapier 将这些对象中 属性 type
的所有值显示为标记为 的数组数据类型 和 属性 id
的所有值作为标记为 数据 ID[=38 的数组=]。如果您选择 type
和 id
作为要传递给代码应用程序的 input
对象的 属性 名称,那么您的代码获取的 Javascript 对象是这个:
input = {
type: [ "name", "name2", "name3" ],
id: [ "123", "456", "789" ]
};
然后您的代码可以在传递给下一个 Action 之前以任何您想要的方式转换数据。
如果您谈论的是使用 Zapier JavaScript 引擎的 Zapier 代码解析它,那么您可以这样做:
Zapier return 是你告诉它的任何对象,所以假设你使用它们的标准名称作为 input
,这就是你所做的:
output = {};
for (var i = 0; i < input["data"].length; i++) {
output["myObject"+str(i)] = input.data[i];
}
这应该 return 一个名为 output
的对象,如下所示:
"output" : {
"myObject0" : {
"type": "name",
"id": "123"
},
"myObject1" : {
"type" : "name",
"id": "124"
}
}
我发现我需要调用 JSON.parse()
和 JSON.stringify()
才能使其正常工作。假设我的输入作为 (key,value) 放入 Zapier,其中 key = data 和 value 是:
[{"type": "name", "id":"123"}, {"type": "name2", "id":"456"},
{"type": "name3", "id":"789" }]
我的代码:
output = {};
var obj = JSON.parse(input.data);
for (var i = 0; i < obj.length; i++) {
output["myObject"+i] = JSON.stringify(obj[i]);
}
生成的输出是:
myObject0: {"type":"name", "id":"123"}
myObject1: {"type":"name2", "id":"456"}
myObject2: {"type":"name3", "id":"789"}
我正在尝试 JSON.parse 数组 "data." 我需要能够将数组作为根传递。
{
"data": [
{
"type": "name",
"id": "123"
}
]
}
响应应该看起来像这样只包含对象。 Zapier 似乎不能很好地处理数组。
{
"type": "name",
"id": "123"
}
难道我不能使用简单的脚本来完成工作吗?
编辑:
本质上,您需要在脚本中覆盖 post_poll
方法 (https://zapier.com/developer/documentation/v2/scripting/#polling),这样您就可以拦截 API 的响应。之后,您只需要 return 一个具有您想要的值的新对象。而不是 returning: {"data":[ {...}, {...}, ]},您只需要 return 数据的值。类似于:
xyz_post_poll: function(bundle){
var response = JSON.parse(bundle.response.content);
return response.data || [];
}
是的,您可以使用一个简单的脚本,Javascript 或 Python。单击现有触发器和操作之间的 +,然后添加一个操作,选择 Code by Zapier 作为应用程序。假设您的 JSON 是触发器的输出:
{
"data": [
{
"type": "name",
"id": "123"
}
]
}
Zapier 的代码将为您提供以下选项:
Setup Code by Zapier Run Javascript
如果对象数组 data
具有多个元素,则 Zapier 将这些对象中 属性 type
的所有值显示为标记为 的数组数据类型 和 属性 id
的所有值作为标记为 数据 ID[=38 的数组=]。如果您选择 type
和 id
作为要传递给代码应用程序的 input
对象的 属性 名称,那么您的代码获取的 Javascript 对象是这个:
input = {
type: [ "name", "name2", "name3" ],
id: [ "123", "456", "789" ]
};
然后您的代码可以在传递给下一个 Action 之前以任何您想要的方式转换数据。
如果您谈论的是使用 Zapier JavaScript 引擎的 Zapier 代码解析它,那么您可以这样做:
Zapier return 是你告诉它的任何对象,所以假设你使用它们的标准名称作为 input
,这就是你所做的:
output = {};
for (var i = 0; i < input["data"].length; i++) {
output["myObject"+str(i)] = input.data[i];
}
这应该 return 一个名为 output
的对象,如下所示:
"output" : {
"myObject0" : {
"type": "name",
"id": "123"
},
"myObject1" : {
"type" : "name",
"id": "124"
}
}
我发现我需要调用 JSON.parse()
和 JSON.stringify()
才能使其正常工作。假设我的输入作为 (key,value) 放入 Zapier,其中 key = data 和 value 是:
[{"type": "name", "id":"123"}, {"type": "name2", "id":"456"},
{"type": "name3", "id":"789" }]
我的代码:
output = {};
var obj = JSON.parse(input.data);
for (var i = 0; i < obj.length; i++) {
output["myObject"+i] = JSON.stringify(obj[i]);
}
生成的输出是:
myObject0: {"type":"name", "id":"123"}
myObject1: {"type":"name2", "id":"456"}
myObject2: {"type":"name3", "id":"789"}