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

时间:2016-04-03 02:36:53

标签: javascript arrays json polling zapier

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

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

3 个答案:

答案 0 :(得分:4)

我发现我需要致电JSON.parse()JSON.stringify()才能使其发挥作用。假设我的输入被放在Zapier中作为(键,值),其中key = data,值为:

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

答案 1 :(得分:2)

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

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

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

Setup Code by Zapier Run Javascript

如果对象数组data包含多个元素,则Zapier会将这些对象中属性type的所有值显示为标记为 数据类型 以及属性id的所有值,作为标有 数据ID 的数组。如果您选择typeid作为要传递给代码应用的input对象的属性名称,那么代码获取的Javascript对象就是:

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

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

Code by Zapier

答案 2 :(得分:1)

如果您正在谈论解析它使用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"
    }
}