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

How do I JSON.parse an array in a Zapier Trigger?

本文关键字:JSON parse 数组 触发器 Zapier      更新时间:2023-12-15

我正在尝试JSON.解析数组"data"。我需要能够将数组作为根传递。

{
  "data": [
    {
      "type": "name",
      "id": "123"
    }
  ]
}

响应应该像这样只包含对象。Zapier似乎不能很好地处理数组。

{
      "type": "name",
      "id": "123"
}

难道我不应该用一个简单的脚本来完成这项工作吗?


编辑:

从本质上讲,您将想要覆盖post_poll方法(https://zapier.com/developer/documentation/v2/scripting/#polling)在脚本中,这样您就可以截获API的响应。之后,您只需要返回一个具有所需值的新对象。您只需要返回数据的值,而不必返回:{"data":〔{…},{…},〕}。类似于:

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

我发现我需要调用JSON.parse()JSON.stringify()才能使其工作。假设我的输入在Zapier中作为(键,值)输入,其中键=数据,值为:

[{"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"}

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

{
  "data": [
    {
      "type": "name",
      "id": "123"
    }
  ]
}

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

Zapier运行Javascript 的设置代码

如果对象data的数组有多个元素,则Zapier将这些对象中属性type的所有值表示为标记为数据类型的数组,并将属性id的所有值显示为标记为Data ID。如果选择typeid作为要传递给Code应用程序的input对象的属性名,那么代码得到的Javascript对象是:

input = {
 type: [ "name", "name2", "name3" ],
 id: [ "123", "456", "789" ]
};

然后,您的代码可以以任何方式转换数据,然后再传递到下一个Action。

Zapier代码,

如果你谈论的是解析,它使用Zapier的Code-By-Zapier JavaScript引擎,那么你要做的是:

Zapier会返回你告诉它的任何对象,所以假设你使用他们的标准名称input,下面是你要做的:

output = {};
for (var i = 0; i < input["data"].length; i++) {
  output["myObject"+str(i)] = input.data[i];
}

这应该返回一个名为output的对象,如下所示:

"output" : {
    "myObject0" : {  
      "type": "name",
      "id": "123"
    },
    "myObject1" : {
      "type" : "name",
      "id": "124"
    }
}