首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Zapier - Catch Hook - JSON数组-对数组中的每个项进行循环

Zapier - Catch Hook - JSON数组-对数组中的每个项进行循环
EN

Stack Overflow用户
提问于 2018-09-20 21:03:02
回答 1查看 3.6K关注 0票数 4

我需要使用Zapier web钩子来获取一些传入的JSON数据,其中包含一个条目数组,循环该数组,并对每个元素执行一个操作。

下面是一个传入JSON数据的示例:

代码语言:javascript
复制
    {
            "first_name": "Bryan",
            "last_name": "Helmig",
            "age": 27,
            "data": [
                {
                    "title": "Two Down, One to Go",
                    "type": "Left"
                },
                {
                    "title": "Talk the Talk",
                    "type": "Right"
                },
                {
                    "title": "Know the Ropes",
                    "type": "Top"
                }
            ]
    }

数组的大小将是动态的。

问题是,当我在钩子中导入这个数据时,它会给我

代码语言:javascript
复制
data
    title: Two Down, One to Go
    type: Left
    title: Talk the Talk
    type: Right
    title: Know the Ropes
    type: Top

因此,它基本上说data只是所有这些东西的一个大串在一起。

有人能帮我找出是否有可能有一个Zap循环,并做一些事情,例如,插入数据到工作表中,永远在数组中的项目?我知道“代码”操作,我选择了JavaScript,它可以解析字符串,但这似乎没有效率。另外,实际上,JSON数组中的对象中有很多数据。

编辑:解决!回答如下:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-22 14:13:01

因此,第一部分是以Catch Raw Hook作为触发器。这是正常的"Webhooks",但您必须单击以显示较不常见的变体。使用Catch Raw Hook,您的数据不会通过Zapier应用程序自动转换为变量,您将拥有原始的JSON数据。

一旦您拥有了原始的JSON,在我的例子中,您将有一个操作,这将是"Code“操作。我在用JavaScript。在我的模板中,我获取了整个JSON字符串(您现在导入的整个JSON是一个字符串,而不是一个对象,因此我们不能使用".“(点)符号来访问它的部分)。

您需要在代码中JSON.parse()字符串。但首先,让我解释一下,Zapier有一个名为inputData的预定义变量,您将在代码中使用它。然后,在“代码”操作的“编辑模板”部分的顶部,您将看到可以将导入的JSON字符串的变量命名。

现在是有趣的部分!在代码中,您将键入:

代码语言:javascript
复制
// of course, you can change the variables to what you want
// but 'inputData' is unique, can't change that
const myData = JSON.parse(inputData.rawJsonData); 

所以,我的原始数据是一个字符串,它还不是JSON,所以这一行代码使它成为一个JSON对象。现在,作为一个对象,我们可以循环它或.map或访问'this.that‘或任何您想要的东西。

关于Zapier中的“代码”,需要提到的下一件重要的事情是,为了把你的东西拿出来,你return。因此,在接下来的几行中,我将返回一个.map函数,该函数返回数组中的每个项。很难理解Zapier是如何对待这个问题的,但是它实际上运行了您创建的下一个“操作”(例如,在该.map中每次循环时都会向工作表中添加一行)。那么,让我们来看一看:

代码语言:javascript
复制
return myData.data.map(item => {
    return item;
});

如果您还记得,我在原始JSON中列出了一个名为"data“的数组。它将在该数组上循环,因为我正在returning,因此它将为每个循环执行一个“添加行到表”(在我的例子中),从而将我的所有数据作为多行插入到我的电子表格中。

所以完成的代码:

代码语言:javascript
复制
const myData = JSON.parse(inputData.rawJsonData);

return myData.data.map(item => {
    return item; 
});
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52433286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档