我有以下格式的json数据
{"updates":
{"message" :"[[student:123]] is present."},
"references":[{"type":"student","full_name":"XYZ","id":123}]
}
如何使用邮件中显示的ID将学生姓名映射到邮件? 我对JSON解析比较陌生。我目前正在使用EJS模板将JSON操作为HTML。
只需使用
<%alert(updates.message.student)%>
返回“undefined”。请帮忙。
答案 0 :(得分:2)
updates.message
是一个字符串,而不是JavaScript对象。您可以通过整个属性的引号来判断。 JavaScript字符串没有student
属性,因此您获得undefined
。您可以使用正则表达式从字符串中解析出JSON部分,然后使用JSON.parse()
来获取JSON对象。但是,您的示例中的学生ID也在updates.references[0].id
。
要获取学生证,请执行以下操作:
<% alert(updates.references[0].id) %>
编辑:如果你真的想从邮件中获取id,你需要以某种方式解析它。如果消息格式始终相同,则可以尝试使用正则表达式或字符串拆分来获取包含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];
要从references
部分获取相应的数据,您需要循环直到找到消息中带有id
的数据。这样可行。
//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;
}
}
答案 1 :(得分:0)
试
var json = {
"updates": {
"message": "[[student:123]] is present."
},
"references": [
{
"type": "student",
"full_name": "XYZ",
"id": 123
}
]
};
alert(json.references[0].full_name);