2011-08-30 3 views
0

J'ai données JSON dans le format suivantRécupération des données Références de JSON

{"updates": 
    {"message" :"[[student:123]] is present."}, 
    "references":[{"type":"student","full_name":"XYZ","id":123}] 
} 

Comment puis-je mapper le nom d'étudiant au message en utilisant le présent identifiant sur le message? Je suis relativement nouveau dans l'analyse JSON. J'utilise actuellement le modèle EJS pour manipuler le JSON en HTML.

Dans ce

juste en utilisant
<%alert(updates.message.student)%> 

retours "undefined". S'il vous plaît aider.

+0

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

Répondre

2

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; 
    } 
} 
+0

Merci beaucoup. C'était d'une grande aide. – RKV

0

essayer

var json = { 
    "updates": { 
     "message": "[[student:123]] is present." 
    }, 
    "references": [ 
     { 
      "type": "student", 
      "full_name": "XYZ", 
      "id": 123 
     } 
    ] 
}; 

alert(json.references[0].full_name); 
Questions connexes