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

如何用kdb+将Cryptostats返回的嵌套JSON转换为数据表

将Cryptostats嵌套JSON转换为kdb+数据表

问题描述

我正尝试从Cryptostats获取数据,其返回结果为嵌套JSON格式,希望将其转换为包含所有字段的kdb+数据表。目前已有的kdb+代码如下:

query:"https://api.cryptostats.community/api/v1/fees/oneDayTotalFees/2023-02-07";
raw:.Q.hg query;
res:.j.k raw;

解决方案

Cryptostats返回的JSON为嵌套结构(含字典、列表嵌套),.j.k解析后得到嵌套的字典/列表,需展平结构才能生成标准kdb+数据表,具体步骤如下:

1. 递归展平嵌套字典

编写递归函数,将嵌套字典的子字段转为顶层字段(用.连接父/子字段名):

// 递归展平嵌套字典
flattenDict:{[d]
  $[
    99h=type d; // 判断是否为字典类型
    raze {[k;v]
      $[99h=type v; (k,".",')'flattenDict v; (enlist k)!enlist v]
    }[;] each d;
    enlist d
  ]
};

2. 生成数据表

对解析后的每个JSON条目应用展平函数,再合并为数据表:

// 展平所有数据条目
flattened:flattenDict each res;
// 合并展平后的字典为数据表
finalTable:flip raze each flattened;

3. 处理数组字段(可选)

若嵌套结构包含数组类型字段,可将其展开为多行(以data.fees数组字段为例):

// 展开指定数组字段为多行
expandArray:{[tbl;col]
  raze {[row]
    $[0<count row[col]; update col:x from row where x in row[col]; enlist row]
  } each tbl
};
// 应用展开函数
finalTable:expandArray[finalTable;`data.fees];

结果验证

执行代码后,finalTable即为包含嵌套JSON所有字段的kdb+数据表,直接输入变量名即可查看完整结构与数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 22:00:57