众所周知,我们可以利用
.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)可以有效地读取它?
使用
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