如何把JSON字符串写入DolphinDB的内存表?

后端开发 2026-07-11

我在尝试从一个HTTP API获取JSON数据,并将其转换为DolphinDB的内存表。JSON响应是一个对象数组,我想把它存成一张表,其中每个对象对应一行。

下面是我的代码:

try { 
    loadPlugin("httpClient")
} catch(x) { 
    print("Plugin load failed: " + x) 
}

API_KEY = 'risksoft_33585c5e-da1f-4e3b-8bd2-73ef737859db00' 
header = dict(string, string)
header["X-API-Key"] = API_KEY

params = dict(string, ANY)
params["code"] = "2330 TT Equity"
params["start_date"] = "2026-01-01"
params["end_date"] = "2026-01-03"
url = "https://api.one10.com/API/module6"
resp = httpClient::httpGet(url=url, params=params, timeout=20000, headers=header)

/*
resp["text"] contains a JSON string like:

'[{"code":"2330 TT Equity","da":"2026-01-01","r_z_s":1.0339084316470313,"r_z_all":14.902139570270752,"r_z_gics":9.615418377056802,"r_z_sub_gics":15.815752978952029,"r_z_top50cap":null},
  {"code":"2330 TT Equity","da":"2026-01-02","r_z_s":1.0339084316470313,"r_z_all":14.902126873959881,"r_z_gics":9.615407199304759,"r_z_sub_gics":15.815691199960133,"r_z_top50cap":2.1884785540779355},
  {"code":"2330 TT Equity","da":"2026-01-03","r_z_s":1.0339084316470313,"r_z_all":14.902110479550133,"r_z_gics":9.61539498129776,"r_z_sub_gics":15.815691199960133,"r_z_top50cap":null}]'
*/

respData = fromStdJson(resp["text"]);
typestr(respData)            // ANY VECTOR
typestr(respData[0])         // STRING -> ANY DICTIONARY

respData 是一个字典对象的向量。每个字典都具备相同的键(codedar_z_sr_z_allr_z_gicsr_z_sub_gicsr_z_top50cap),值的类型混合(STRING、DATE、DOUBLE,或NULL)。我想把这些数据存储到DolphinDB的内存表中,表有3 行、7列。

我目前的尝试如下:

  1. table(respData)
    这会创建一个只有单列 respData 的表,每一行包含整個字典,而不是展开后的列。

  2. each(transpose, respData)

each(transpose, respData)

这会报错:
Usage: transpose(X). If X is a dictionary, its value type [VOID] can't serve as a table column's type.

  1. 提取键和值
    我尝试从第一份字典中获取键,然后再从所有字典中收集值,但 respData 是ANY VECTOR类型,其元素(字典)在此上下文中没有可用的 values() 方法。

cols = respData[0].keys() // returns the list of keys rows = respData.values() // Error: values method not supported for ANY type.

如何将这个字典向量转换成一个正确的DolphinDB表,使每个字典成为一行、每个键成为一列?

解决方案

你有没有尝试过parseJsonTable函数?

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章