如何 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 的数组。如果您选择type
和id
作为要传递给代码应用程序的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 代码”(Javascript)读取文件输入