2016-04-03 9 views
0

Ich versuche, JSON.parse das Array "Daten." Ich muss in der Lage sein, das Array als Root übergeben.Wie kann ich ein Array in einem Zapier-Trigger JSON.parse?

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

Die Antwort sollte wie folgt aussehen und nur Objekte enthalten. Zapier scheint mit Arrays nicht gut zu funktionieren.

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

Sollte ich nicht in der Lage sein, ein einfaches Skript zu verwenden, um die Arbeit zu erledigen?


EDIT:

Im Wesentlichen, Sie gehen die post_poll Methode (https://zapier.com/developer/documentation/v2/scripting/#polling) in Skript außer Kraft setzen wollen, so dass Sie die Antwort des API abfangen kann. Danach müssen Sie nur ein neues Objekt mit den gewünschten Werten zurückgeben. Anstelle von: {"data": [{...}, {...},]} müssen Sie nur den Wert der Daten zurückgeben. So etwas wie:

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

Ich bin nicht vertraut mit Zapier, fragen Sie im Wesentlichen nach einer Funktion, die mit Ihrem JSON beginnt und dieses Objekt zurückgibt? – JordanHendrix

Antwort

1

Ja, Sie können ein einfaches Skript, Javascript oder Python verwenden. Klicken Sie auf die + zwischen Ihrem vorhandenen Auslöser und Aktion und fügen Sie eine Aktion hinzu, indem Sie Code by Zapier als App auswählen. Angenommen, Ihre JSON wird die Ausgabe des Trigger:

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

-Code von Zapier würden Sie mit diesen Optionen präsentieren:

Setup Code by Zapier Run Javascript

Wenn das Array von Objekten data mehr als ein Element hat, dann Zapier präsentiert alle Werte für die Eigenschaft type in diesen Objekten als ein Array mit der Bezeichnung Datentyp und alle Werte für die Eigenschaft id als Array-Labor Daten ID. Wenn Sie type und id als Eigenschaftsnamen wählen für das input Objekt Code App weitergeleitet werden, dann das Objekt der Javascript Code ist dies bekommt:

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

Ihr Code kann dann die Daten beliebig verwandeln Sie wollen bevor Sie zur nächsten Aktion übergehen.

Code by Zapier,

+0

Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz zur Verfügung zu stellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. - [Aus Bewertung] (/ review/low-quality-posts/11879934) – Aziz

+1

Editierte Original-Post genau das zu tun. Danke für die konstruktive Beratung. –

1

Wenn Sie sprechen über das Parsen es Zapier Kodex von Zapier JavaScript-Engine verwendet, dann ist hier, was Sie tun:

Zapier kehrt jedes Objekt Sie es sagen, um so vorausgesetzt, Sie verwenden, um ihre Standardname für input, hier ist was Sie tun:

output = {}; 

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

Dies ist ein Objekt output genannt zurückkehren sollte, die wie folgt aussieht:

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

Ich fand, dass ich JSON.parse() und JSON.stringify() aufrufen musste, um dies zur Arbeit zu bringen.Nehmen wir an, meine Eingabe in Zapier geputtet wird als (Schlüssel, Wert), wo die Schlüssel = Daten und der Wert ist:

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

Mein Code:

output = {}; 

var obj = JSON.parse(input.data); 

for (var i = 0; i < obj.length; i++) { 
    output["myObject"+i] = JSON.stringify(obj[i]); 
} 

Der Ausgang erzeugt ist:

myObject0: {"type":"name", "id":"123"} 
myObject1: {"type":"name2", "id":"456"} 
myObject2: {"type":"name3", "id":"789"}