先核对三份信息

本次读取的官方文档中,K 线示例数组有 7 项;同一节的字段说明列出 8 项。2026 年 9 月 10 日 09:04:52.100827–09:04:52.958160 UTC 的公开 GET 响应包含两行,每行实际都是 8 项。

因此,照抄示例长度写死解析器会遇到下标问题。我们可以确认这次样本与页面中的差异,但没有验证所有币种、所有历史响应或旧版服务行为,不能把 7 项直接宣称为某个已知旧版本。

只读请求与原始样本

下面的请求只读取两根小时 K 线。即时数据会变化,复现时主要检查每行长度、类型以及相应时间戳,不应要求价格和成交量与本文完全相同。

无需密钥的公开 GETsh
curl -i --max-time 20 -H 'Accept: application/json' 'https://api.gateio.ws/api/v4/spot/candlesticks?currency_pair=BTC_USDT&interval=1h&limit=2'
本次保存的完整响应json
[
  [
    "1789027200",
    "13467378.09542910",
    "78112",
    "78177.9",
    "78039.7",
    "78112",
    "172.39783300",
    "true"
  ],
  [
    "1789030800",
    "482231.50016870",
    "78185.2",
    "78187.5",
    "78111.9",
    "78112",
    "6.17099800",
    "false"
  ]
]

8 项如何对应

按本次字段说明及响应,顺序是:秒时间戳、计价币成交量、收盘价、最高价、最低价、开盘价、基础币成交量、窗口是否结束。使用从零开始的数组下标时,基础币成交量位于 row[6],结束标记位于 row[7]。

这里的价格、成交量和标记都保留为响应中的字符串。价格字段暂时不转换为普通浮点数,能避免教程无意引入精度损失;本文也没有进行金额运算。

两个容易静默出错的转换

第一项是秒时间戳;JavaScript Date 的数值参数使用毫秒。把这类秒值直接传给 new Date,会得到错误年代。先验证值,再乘以 1000。

本次最后一项是字符串 "true" 或 "false",不是 JSON 布尔值。JavaScript 中 Boolean("false") 仍为 true;判断窗口是否结束时必须做明确的字符串比较。收到其他格式时应报错并保留样本,而不是随意猜测。

仅针对本次观察到的 8 项字符串格式的严格解析示例javascript
function parseObservedEightFieldRow(row) {
  if (!Array.isArray(row) || row.length !== 8) {
    throw new Error("Unexpected candlestick row length");
  }
  const [seconds, quoteVolume, close, high, low, open, baseVolume, closed] = row;
  if (closed !== "true" && closed !== "false") {
    throw new Error("Unexpected window flag format");
  }
  const timestampSeconds = Number(seconds);
  if (!Number.isSafeInteger(timestampSeconds)) {
    throw new Error("Invalid timestamp");
  }
  return {
    time: new Date(timestampSeconds * 1000).toISOString(),
    quoteVolume, close, high, low, open, baseVolume,
    isClosed: closed === "true"
  };
}

如何处理 7 项或未知格式

严格校验失败时,先记录准确请求、时间、行长度和原始正文,再核对对应版本文档。不要自动把某项补零,也不要把最后一个数字当布尔标记;这样会掩盖源数据与解析器之间的差异。

最近一行在本次采样中标为 "false",说明当次窗口尚未结束。它只能描述这个样本的状态,不能证明之后的数值不会修订。展示时应把“尚未结束”与完整历史数据区分开。

官方来源与公开响应

文档在 2026-09-10 核对;接口样本采集于同日 09:04:50–09:04:54 UTC。下方文件只含公开接口响应正文。

文档核对使用的文本读取服务可能包含缓存;本地直接请求文档页收到 403。网络出口位置未知,单组样本不能代表所有地区、市场或后续版本。