参考

返回形态速查

同样是 data,形态有四种:行数组、表列表、已排版文本、多段结构。取数前先判类型,否则会在"该按 data[0] 取"的地方去读字段,或者反过来。

四种形态

data 不是一种东西。先看它是什么类型,再决定怎么取:

形态 data 的类型 怎么取
行数组 数组,每项是一行 data[0].字段;多行就是 data[0] → data[n]
表列表 数组的数组,每项是一张表 data[0] 是第一张表,data[0][0] 是表里的第一行
已排版文本 字符串(markdown) 直接显示用 data;程序化取数用多出来的 structured / tables
多段结构 对象,含 tables 从 data.tables 按段取,每段有 title / slug / rows

一句话记法:看第一个字符是 [、{ 还是 "。

33 个端点分别属于哪一种

形态 端点
行数组 quote · kline · minute · hot · technical · chip · profile · search · ipo · dividend · block-trade · margin-trade · orderbook · snapshot
表列表 finance
已排版文本 market-overview · changedist · events · lhb · sector · sector-valuation · macro · bond · etf · dehydrated · screen
多段结构 shareholder · calendar
对象(既不是数组也不是文本) fund · industry-chain
特例 health(无 data)· usage(纯文本,不是 JSON)· challenge(返回挑战本身)

几个容易搞混的

orderbook 和 snapshot 也是行数组,只是恒定 1 行。设计上统一成“行数组”是为了让客户端不必为单对象端点写特判 —— 你照 data[0].字段 取就对了。

⚠️ 上表是单只代码时的形态。传多个代码时形态会变 —— quote / technical / profile 多出一列代码,chip 会变成前缀列名的宽表(行数不翻倍)。细节见批量取数。

finance 是表列表,不是多段结构。data[0] / data[1] / data[2] 依次是利润表 / 资产负债表 / 现金流量表,顺序固定。想按名字取,见下节。

shareholder 和 calendar 是多段结构,data.tables 是保序的表列表。⚠️ shareholder 的段不能按序号取 —— A 股和港股的段数都是 3,但语义完全不同(A 股是十大股东 / 十大流通股东 / 股东户数;港股是持股股东 / 股东分布 / 机构持仓)。要按 slug 取。

fund 是真正对象(不是文本):data.main_net、data.main_rank 这类键直接取。

文本型端点怎么程序化取数

文本型端点的 data 是给人看的 markdown,但同时多出两个字段:

字段 是什么
structured 第一张表,[{列名: 值}]
tables 全部表,[[{列名: 值}], ...]

data 本身没有被改动 —— 文本客户端继续用 data,程序客户端用 structured / tables。多段输出(如 calendar、macro)用 tables 才拿得全。

structured 只给第一张表,所以只要一张表时用它最省事(如 screen 的筛选结果);有多段时一定要用 tables。

常见误用

  • 把文本型当数组取 —— market-overview、sector 这类 data 是字符串,data[0] 拿到的是第一个字符,不是第一行。
  • 把行数组当对象取 —— quote 的 data 是数组,直接读 data.last 取不到,要 data[0].last。
  • finance 按名字取 —— 它是顺序固定的表列表,没有 slug;按名字取会拿错表。
  • shareholder 按序号取段 —— A 股 / 港股段数相同但语义不同,必须按 slug。
  • 忘了 structured 只含第一张表 —— 多段端点只读它会丢掉后面所有段。

最后更新: 2026-10-07

形态为 2026-10-07 逐个端点实测(数据层直调,逐端点打印返回类型与键名);文本型端点额外多出的 structured / tables 取自服务端注入逻辑。