如何在Zapier触发器中JSON.parse一个数组?

Wes*_*vis 5 javascript arrays json polling zapier

我正在尝试JSON.parse数组“数据”。我需要能够将数组作为根传递。

{
  "data": [
    {
      "type": "name",
      "id": "123"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

响应看起来应该只包含对象。Zapier似乎不适用于数组。

{
      "type": "name",
      "id": "123"
}
Run Code Online (Sandbox Code Playgroud)

我不应该能够使用简单的脚本来完成工作吗?


编辑:

本质上,您将要在脚本编写中覆盖post_poll方法(https://zapier.com/developer/documentation/v2/scripting/#polling),以便可以拦截API的响应。之后,您只需要返回一个具有所需值的新对象。无需返回:{“ data”:[{...},{...},]},您只需要返回data的值。就像是:

xyz_post_poll: function(bundle){
  var response = JSON.parse(bundle.response.content);
  return response.data || [];
}
Run Code Online (Sandbox Code Playgroud)

小智 5

我发现我需要打电话给JSON.parse()JSON.stringify()以便使其正常工作。假设我的输入以(key,value)的形式放在Zapier中,其中key = data,值是:

[{"type": "name", "id":"123"}, {"type": "name2", "id":"456"}, 
  {"type": "name3", "id":"789" }]
Run Code Online (Sandbox Code Playgroud)

我的代码:

output = {};

var obj = JSON.parse(input.data);

for (var i = 0; i < obj.length; i++) {
   output["myObject"+i] = JSON.stringify(obj[i]);
}
Run Code Online (Sandbox Code Playgroud)

生成的输出是:

myObject0: {"type":"name", "id":"123"}
myObject1: {"type":"name2", "id":"456"}
myObject2: {"type":"name3", "id":"789"}
Run Code Online (Sandbox Code Playgroud)


Mik*_*ews 4

是的,您可以使用简单的脚本、Javascript 或 Python。单击现有触发器和操作之间的+,然后添加操作,选择 Code by Zapier 作为应用程序。假设您的 JSON 是触发器的输出:

{
  "data": [
    {
      "type": "name",
      "id": "123"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

Zapier 的代码将为您提供以下选项:

通过 Zapier Run Javascript 设置代码

如果对象数组data具有多个元素,则 Zapier 将type这些对象中属性的所有值显示为标记为Data Type 的数组,并将属性的所有值显示为标记为Data IDid的数组。如果您选择和作为要传递给代码应用程序的对象的属性名称,那么您的代码获取的 Javascript 对象如下:typeidinput

input = {
 type: [ "name", "name2", "name3" ],
 id: [ "123", "456", "789" ]
};
Run Code Online (Sandbox Code Playgroud)

然后,您的代码可以在传递到下一个操作之前以任何您想要的方式转换数据。

扎皮尔的代码