Как мы знаем, мы можем сериализовать таблицу q, используя пространство имен .j.j
.
Однако при использовании save
или set
для записи сериализованной таблицы q в соответствующий файл .json возникает проблема с отсутствием ,
после каждой строки. При запуске save (`$":", (getenv `HOME), "/test.json")
в q мы получаем:
{"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? Я просмотрел каждую тему и просмотрел официальную документацию и даже git-репозиторий RapidJSON, чтобы попытаться установить этот пакет, думая, что он может быть быстрее, но и более актуальным. Мой вопрос: подходит ли что-либо из вышеперечисленного или есть лучший способ сохранить в .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
Спасибо, работает отлично, с небольшими корректировками.