在下面的代码片段中,我从java Servlet接收一个JSON对象并访问该对象的属性。JSON 对象:{ "redirect": "/index.html", "logout": "/_cloudshellProxy/_ah/logout?continue\u003d%2Findex.html", "status": true, "register": true, "user": { "email": "s@example.com", "username": "Yevesky", "college": { "name": "Lafayette College", "key": "aglzcHN0ZWFtMTlyFAsSB0NvbGxlZ2UYgICAgICAswgM" }, "key": "aglzcHN0ZWFtMTlyEQsSBFVzZXIYgICAgICgxAgM" }}以下是我如何处理来自 servlet 的对象。fetch("/getUserInfo").then(response => response.json()).then(object => { jsonObject = object; console.log(jsonObject); setUpUserPage(jsonObject); loadClasses(); }); function setUpUserPage(json){ const jsonData = json; var name = document.createElement("h3"); name.innerText = String(jsonData.username); var uni = document.createElement("h6"); uni.innerText = String(jsonData.college.name); // Error occurs here var classification = document.createElement("h6"); console.log(jsonData.classes); if (jsonData?.isProf) { classification.innerText = "Professor"; } else { classification.innerText = "Student"; } var email = document.createElement("h6"); email.innerText = String(jsonData.email); var spacer = document.createElement("BR"); //change nickname link var changeNicknameP = document.createElement("p"); changeNicknameP.innerText = "Change your nickname: "; var anchor = document.createElement("A"); var link = document.createTextNode("here"); anchor.setAttribute("href", "#"); anchor.appendChild(link); changeNicknameP.appendChild(anchor);}问题是我不明白为什么我会得到一个“TypeError:无法读取未定义的属性'名称'”,如果对象有这样的属性?它只是JavaScript还是我没有遵循一个过程。我每次都会在控制台上打印JSON对象,以查看该属性是否确实存在。
1 回答
白衣非少年
TA贡献1155条经验 获得超0个赞
这是因为您可能犯了一个错误。“学院”是用户的属性,而不是你的jsonData。将你的行替换为:
uni.innerText = String(jsonData.user.college.name);
如果响应可以更改,请不要忘记检查对象的属性(例如,在某些情况下,用户或学院是选项属性)
PS:对不起,我无法发表评论,因为我对SO没有足够的观点。
添加回答
举报
0/150
提交
取消