You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Web JavaScript解析JSON返回undefined,求正确解码方法

问题分析与解决方案

嘿,这个问题很常见——你拿到undefined是因为**forms是一个数组**,不是单个对象,直接用.name去访问数组肯定拿不到对应的值呀!

先看你的代码里的两个关键问题:

  1. JSON.parse()的参数必须是JSON格式的字符串,你直接传了一个对象,这其实没必要(而且语法上也有问题,正确的写法应该把JSON内容用引号包起来);
  2. 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:24:17