从 JSON 检索引用数据
我有以下格式的 json 数据
{"updates":
{"message" :"[[student:123]] is present."},
"references":[{"type":"student","full_name":"XYZ","id":123}]
}
如何使用消息中存在的 id 将学生姓名映射到消息? 我对 JSON 解析比较陌生。我目前正在使用 EJS 模板将 JSON 操作为 HTML。
仅仅使用
<%alert(updates.message.student)%>
就会返回“未定义”。请帮忙。
I have json data in the following format
{"updates":
{"message" :"[[student:123]] is present."},
"references":[{"type":"student","full_name":"XYZ","id":123}]
}
How can I map the student name to the message using the id present over the message?
I am relatively new to JSON parsing. I am currently using EJS template to manipulate the JSON into HTML.
In that just using
<%alert(updates.message.student)%>
returns "undefined". Please help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
updates.message
是一个字符串,而不是 JavaScript 对象。您可以通过整个属性周围的引号来判断。 JavaScript 字符串没有student
属性,因此您将得到undefined
。您可以使用正则表达式从字符串中解析出 JSON 部分,然后使用 JSON.parse() 获取 JSON 对象。但是,在您的示例中,学生 ID 也位于updates.references[0].id
中。要获取学生 ID,请执行以下操作:
编辑:如果您确实想从消息中获取 ID,则需要以某种方式解析它。如果消息格式始终相同,您可以尝试使用正则表达式或字符串拆分来获取包含 id 的部分。
然后,要从
references
部分中获取相应的数据,您需要循环遍历,直到找到具有消息中的id
的数据。这会起作用。updates.message
is a string, not a JavaScript object. You can tell by the quotes around the whole attribute. JavaScript strings don't have astudent
property, so you are gettingundefined
. You can parse out the JSON part from the string with regular expressions and then useJSON.parse()
to get the JSON object. However, the student id is also inupdates.references[0].id
in your example.To get the student ID, do this:
edit: If you are really want to get the id out of the message, you need to parse it out somehow. If the message format will always be the same, you can try a regular expression or string splitting to get the part containing the id.
To then get the corresponding data out of the
references
part, you need to loop through until you find one with theid
from the message. This would work.尝试
try