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

Angular中无法从本地JSON文件获取数据问题求助

解决本地JSON文件读取时的Unexpected token <错误

嘿,这个错误我之前踩过好多次!本质问题很简单:你代码里尝试解析成JSON的内容,根本不是合法的JSON,而是以<开头的HTML(十有八九是404错误页面——浏览器找不到你指定的JSON文件)。

给你几个针对性的排查和解决步骤:

  • 先核对JSON文件的路径是否完全正确
    这是最常见的原因。比如你以为文件在项目根目录的data.json,但实际你把它放在了assets文件夹里,那请求路径就得写成./assets/data.json。最简单的验证方法:直接在浏览器地址栏输入你代码里写的那个JSON文件路径,看看能不能正常显示JSON内容。如果跳转到404页面,那路径肯定错了。

  • 确认本地服务器的配置(如果直接打开HTML文件的话)
    如果你是直接双击打开本地HTML文件(用file://协议访问),很多浏览器会限制本地文件的读取权限,导致请求失败返回错误页面。这种情况建议启动一个本地静态服务器,比如用命令行运行npx serve,然后通过http://localhost:3000这样的地址访问你的应用,再请求JSON文件就正常了。

  • 检查JSON文件本身的格式合法性
    虽然这个错误提示是开头有<,但如果路径没问题的话,也得确认你的JSON没有语法错误——比如有没有多写逗号、用了单引号(JSON要求必须是双引号)、或者属性名没加引号。可以把JSON内容粘到JSON校验工具里检查一下,确保格式完全合规。

  • 核对请求代码的细节
    比如用fetch或者框架的HTTP客户端请求时,有没有写错请求方法(应该是GET,默认就是,但别瞎改),有没有加了不必要的请求头导致服务器返回HTML。举个简单的fetch示例:

    fetch('./assets/your-data.json')
      .then(response => {
        // 先检查响应状态码,确认成功
        if (!response.ok) throw new Error('请求失败');
        return response.json();
      })
      .then(data => {
        // 这里处理你的联动逻辑,比如根据选中的Unit过滤角色
        console.log(data);
      })
      .catch(err => console.error(err));
    

另外,针对你要做的联动选择功能,确保JSON的结构是方便后续处理的,比如可以写成这样:

{
  "units": [
    {
      "name": "UnitOne",
      "roles": ["role1", "role2", "role3"]
    },
    {
      "name": "UnitTwo",
      "roles": ["role4", "role5"]
    }
  ]
}

这样后续根据选中的Unit名称,就能快速筛选出对应的角色列表了。

内容的提问来源于stack exchange,提问作者SteveBl

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:02:43