将 kdb+/q 表保存为 JSON

问题描述 投票:0回答:1

众所周知,我们可以利用

.j.j
命名空间来序列化 q 表。

但是,在使用

save
set
将序列化的 q 表写入适当的 .json 文件时,会出现每行后面缺少
,
的问题。当在 q 中运行
save (`$":", (getenv `HOME), "/test.json")
时,我们得到:

{"dir":"1","recursion":"False"}
{"dir":"2","recursion":"True"}

如您所见,VSCode 拾取了缺少的

,
。但是,如果您运行
(`$":", (getenv `HOME), "/test.json") set (.j.j .testTable)
,我们会得到以下 JSON 输出:

NULLNULLNULLNULL[{"dir":"1","recursion":"False"}, {"dir":"2","recursion":"True"}]

但是我们在这里得到 NULL,行似乎是分开的。

有没有方便的方法将q表保存到.json中?我浏览了每个主题,并查看了官方文档,甚至 RapidJSON git 存储库,尝试安装该包,认为它可能更快,但也更最新。我的问题是,上述任何内容是否合适,或者是否有更好的方法保存到 .json 以便任何其他软件(包括 Python)可以有效地读取它?

kdb
1个回答
0
投票

使用

0:
https://code.kx.com/q/ref/file-text/#save-text):

q)t:flip`dir`recursion!(1 2f;01b)
q)`:test.json 0: enlist .j.j t
`:test.json

这样写

test.json

$ cat test.json
[{"dir":1,"recursion":false},
 {"dir":2,"recursion":true}]

可以读回

kdb+

q)t~.j.k raze read0`:test.json
1b
© www.soinside.com 2019 - 2024. All rights reserved.