updates.message
est une chaîne, pas un objet JavaScript. Vous pouvez dire par les citations autour de l'attribut entier. Les chaînes JavaScript n'ont pas de propriété student
, vous obtenez donc undefined
. Vous pouvez analyser la partie JSON de la chaîne avec des expressions régulières, puis utiliser JSON.parse()
pour obtenir l'objet JSON. Cependant, l'identifiant de l'étudiant est également dans updates.references[0].id
dans votre exemple.
Pour obtenir l'ID étudiant, faites ceci:
<% alert(updates.references[0].id) %>
modifier: Si vous voulez vraiment obtenir l'ID de message, vous avez besoin de l'analyser en quelque sorte. Si le format du message est toujours le même, vous pouvez essayer une expression régulière ou une division de chaîne pour obtenir la pièce contenant l'ID.
var id_part = json.updates.message.split(" ")[0];
//parse out just the ID number in a group
var re = /\[\[[^:]+:(\d+)\]\]/;
var matches = re.exec(id_part);
var id = matches[1];
Pour obtenir ensuite les données correspondantes sur la partie references
, vous devez faire une boucle à travers jusqu'à ce que vous trouviez un avec le id
du message. Cela fonctionnerait.
//Ghetto old for loop for browser compatibility
for (var i = 0; i < updates.references.length; i++) {
if (updates.references[i].id == id) {
//We have found the reference we want.
//Do stuff with that reference.
break;
}
}
S'il vous plaît jeter un oeil à ma réponse. Je l'ai mis à jour pour répondre plus complètement à votre question. – jergason