2015-07-27 1 views
0

Je travaille avec NodeRed et utilise un nœud Twitter. J'essaie de comprendre comment répondre aux utilisateurs s'ils tweetent 'X'.Comment filtrer les informations d'une sortie composée de "X": "Y",

La sortie se compose d'une charge de toutes les informations séparées par une virgule et se composent de tous les « x »: « y »,

Comme dans "User": "SanderSchaeffer", "Tweet": "This is my tweet", "date": "01-02-2015", etc.

Comment puis-je faire un filtrage, de préférence avec Javascript ou JSON, juste les informations contenues par "user"? Donc, la sortie serait «SanderSchaeffer»?

Ou ligne de fond: Comment répondre à un utilisateur avec NodeRed? :)

Toutes mes excuses pour le titre pratique, mais je ne sais pas le nom de ce mode de production d'information

+0

Demandez-vous comment lire les propriétés d'un objet? Ou n'est-ce pas JSON correct? – epascarello

Répondre

1

Vous pouvez utiliser le nœud Node-RED Switch pour filtrer.

Vous pouvez le configurer pour agir sur la valeur msg.payload et utiliser l'option contient, puis entrez le texte que vous souhaitez faire correspondre dans la zone.

Cela ne doit autoriser que les Tweets qui correspondent. Vous voudrez alors probablement utiliser un nœud de fonction pour créer une réponse appropriée.

EDIT:

Pour obtenir simplement l'ID utilisateur envoyant alors vous y accéder à partir du nœud de fonction comme suit:

msg.tweet.user.screen_name 
+0

Huh .. Comment cela filtre-t-il le nom d'utilisateur des utilisateurs (@)? Je dois juste pouvoir tweeter de nouveau aux utilisateurs qui tweetent 'x'. Maintenant, je tweete seulement ce que je veux, sans l'utilisateur dans la réponse. –

+0

Reste 'indéfini'.Peu importe que j'essaie 'msg.payload.User',' msg.payload.name' ou 'msg.payload.screen_name' –

+0

Dans ce cas, je vous suggère de poster votre flux à la liste de diffusion afin que les gens peuvent avoir un look correct https: //groups.google.com/forum/#!forum/node-red – hardillb

0

Essayez celui

var myOutput = '"User": "SanderSchaeffer", "Tweet": "This is my tweet", "date": "01-02-2015"'; 
var parse = JSON.parse('{'+myOutput +'}'); 
var userName = parse.User; 
+0

Plus besoin d'analyser les données, la valeur msg.payload Node-RED est déjà un objet JSON – hardillb

0

Javascript a une fonction intégrée convertir les données JSON en un objet JavaScript. Vous pouvez ensuite accéder aux variables JSON en tant qu'attribut de l'objet.

Il suffit d'utiliser le code suivant pour analyser le JSON javascript:

var text = JSON code you retreaved; 
var obj = JSON.parse(text); 

Vous pouvez ensuite utiliser les données variables en y accédant par l'objet:

document.write(obj.User); 
document.write(obj.Tweet); 
document.write(obj.date); 
.... 

Plus d'informations sont disponibles sur http://www.w3schools.com/js/js_json.asp Ce qui explique également comment accéder à un tableau d'objets JSON.

+0

Plus besoin d'analyser les données, la valeur msg.payload Node-RED est déjà un objet JSON – hardillb

+0

Than the second part of la réponse s'applique toujours. Vous devriez être capable de récupérer les données comme s'il s'agissait d'un objet javascript normal avec certains attributs. –

+0

Pas à partir de Node-RED, Il n'y a nulle part où document.write serait approprié, – hardillb