Web JavaScript解析JSON返回undefined,求正确解码方法
问题分析与解决方案
嘿,这个问题很常见——你拿到undefined是因为**forms是一个数组**,不是单个对象,直接用.name去访问数组肯定拿不到对应的值呀!
先看你的代码里的两个关键问题:
JSON.parse()的参数必须是JSON格式的字符串,你直接传了一个对象,这其实没必要(而且语法上也有问题,正确的写法应该把JSON内容用引号包起来);data.forms是数组类型(看JSON里的[]就知道),要访问里面的name,得先定位到数组里的具体元素,再去取属性。
给你修正后的完整代码:
// 首先把JSON内容写成合法的字符串形式(单引号包裹,内部用双引号) const jsonString = '{"forms":[{"url":"example.com/example","name":"example"}]}'; // 解析JSON字符串为JS对象 const data = JSON.parse(jsonString); // 先取数组的第一个元素(索引0),再访问它的name属性 document.getElementById("name").innerHTML = data.forms[0].name;
如果你的forms数组里可能有多个表单对象,还可以遍历数组来处理所有元素:
data.forms.forEach(form => { console.log(form.name); // 依次输出每个表单的name // 也可以把每个name插入到页面里,比如追加到某个容器 // document.getElementById("form-list").innerHTML += `<p>${form.name}</p>`; });
另外,为了避免数组为空时出现报错,建议加个简单的判断:
if (data.forms && data.forms.length > 0) { document.getElementById("name").innerHTML = data.forms[0].name; } else { document.getElementById("name").innerHTML = "暂无表单数据"; }
内容的提问来源于stack exchange,提问作者zhiyan114
相关产品推荐
相关产品推荐

