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

调用BattleMetrics API提取字段返回undefined的解决方法

问题原因

提取字段返回undefined是因为解构的层级和JSON实际嵌套结构不匹配,你要找的name、status等字段不在返回结果的最外层。
对照返回的完整结构,层级关系如下:

  • 最外层根对象仅包含data、included两个一级键
  • data对象下的直接属性为type、id、attributes、relationships
  • 服务器名称、运行状态、玩家数、IP等核心业务字段,全部嵌套在data.attributes路径下
  • 更细分的服务器配置(比如地图、游戏模式、擦服时间等)在data.attributes.details路径下
正确提取写法

逐层按嵌套结构解构即可,示例代码:

const api_url = 'https://api.battlemetrics.com/servers/3753675'
async function getData() {
  const response = await fetch(api_url);
  const json = await response.json();
  // 先取一级键data,再从data下的attributes里提取目标字段
  const { data } = json;
  const { id, name, status, players, maxPlayers, ip, port } = data.attributes;
  // 可打印字段:服务器名、ID、在线状态、当前玩家数、最大玩家数、IP、端口
  console.log(name, id, status, players, maxPlayers, ip, port)
}
getData();

如果要提取更深层的details里的字段,继续向下解构即可:

const { data } = json;
const { name, status, details } = data.attributes;
// 从details里取地图、服务器类型等字段
const { map, rust_type } = details;
console.log(name, status, map, rust_type)
错误说明

之前的写法是直接在最外层的json对象上解构name、id、status,但最外层对象根本不存在这几个键,自然会返回undefined。之前写const { data } = json能正常打印内容,已经找对了第一层路径,顺着data往下找嵌套的attributes就能拿到所有目标字段。
注意:data本身也有一个id属性,和data.attributes.id值完全一致,取用的时候注意区分层级即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 20:42:21