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

Posted

技术标签:

【中文标题】如何 JSON.parse Zapier 触发器中的数组?【英文标题】:How do I JSON.parse an array in a Zapier Trigger? 【发布时间】:2016-07-22 17:14:16 【问题描述】:

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


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

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


      "type": "name",
      "id": "123"

难道我不能使用简单的脚本来完成工作吗?


编辑:

基本上,您需要在脚本中覆盖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 || [];

【问题讨论】:

我对 Zapier 不熟悉,您本质上是在要求一个以您的 json 开头并返回该对象的函数吗? 【参考方案1】:

我发现我需要调用 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"

【讨论】:

【参考方案2】:

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


  "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,

【讨论】:

虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review 编辑原始帖子就是为了做到这一点。感谢您的建设性建议。【参考方案3】:

如果您正在谈论使用 Zapier JavaScript 引擎的 Zapier 代码解析它,那么您可以这样做:

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"
    

【讨论】:

以上是关于如何 JSON.parse Zapier 触发器中的数组?的主要内容,如果未能解决你的问题,请参考以下文章

Zapier:如何确保我只为轮询触发器返回一次项目

是啥导致“Zapier 的代码”触发器独立运行?

如何从 zapier 代码触发 webhook

如何从“Zapier 代码”(Javascript)读取文件输入

Zapier zap开启时如何触发我的subscribeHook

从 Django 代码调用 Zapier 触发器