操作嵌套JSON对象时遇JavaScript控制台语法错误,求排查
解决你的JSON解析与页面显示问题
嗨,我来帮你排查这个问题!你遇到的语法错误和页面只显示h2的问题,主要有两个核心原因,咱们一步步来解决:
1. 先搞定逻辑错误(页面不显示内容的关键)
你已经用JSON.parse()把JSON字符串解析成了对象myObj,但之后访问嵌套属性的时候,却错误地用了原始的字符串变量myJSON!字符串本身是没有LevelOne这类属性的,这就导致代码无法正确读取到你想要的内容。
另外,就算你用对了变量,直接把location对象赋值给innerHTML,页面也只会显示[object Object]——这是JS对对象的默认字符串表示,不是可读的内容。
2. 语法错误的可能原因
你说已经验证过JSON格式正确,那大概率是复制代码时带入了不可见的特殊字符(比如全角空格、非标准引号)。不过只要我们修正逻辑错误后,手动检查一下字符串的引号和空格,就能解决这个问题。
修复后的完整代码
<!DOCTYPE html> <html> <body> <h2>Testing JSON .</h2> <p id="demo"></p> <script> // 确保这里的字符串没有特殊字符,引号都是标准的半角引号 var myJSON = '{ "LevelOne": { "LevelTwo": { "location": { "campus": "SouthWest", "building": "Biggest", "floor": "1st", "room": "101" }, "quantity": "1", "section": "ABC", "task": "abc123456zyx" } } }'; var myObj = JSON.parse(myJSON); // 方案1:提取具体属性,显示可读性强的文本 document.getElementById("demo").innerHTML = "Campus: " + myObj.LevelOne.LevelTwo.location.campus + "<br>" + "Building: " + myObj.LevelOne.LevelTwo.location.building + "<br>" + "Floor: " + myObj.LevelOne.LevelTwo.location.floor + "<br>" + "Room: " + myObj.LevelOne.LevelTwo.location.room; // 方案2:如果想直接展示格式化后的JSON结构,可以用这个 // document.getElementById("demo").innerHTML = "<pre>" + JSON.stringify(myObj.LevelOne.LevelTwo.location, null, 2) + "</pre>"; </script> </body> </html>
关键修复点总结
- 替换变量:用解析后的
myObj代替myJSON来访问嵌套属性。 - 优化显示:要么提取具体字段拼接成可读文本,要么用
JSON.stringify()+<pre>标签来展示格式化的JSON结构。 - 检查字符:如果还是有语法错误,建议手动重新输入JSON字符串的引号和空格,避免不可见特殊字符干扰。
内容的提问来源于stack exchange,提问作者DysonGuy
相关产品推荐
相关产品推荐

