Чтобы прочитать ваш JSON-файл в kdb +, вы должны использовать read0
. Это возвращает строки файла в виде списка строк.
q)read0`:sample.json
,"{"
"\"name\":\"John\","
"\"age\":30,"
"\"cars\":[ \"Ford\", \"BMW\", \"Fiat\" ]"
,"}"
kdb + позволяет десериализацию (и сериализацию) объектов JSON в словари с использованием пространства имен .j
. Встроенный .j.k
ожидает одну строку символов, содержащую json, и преобразует ее в словарь. raze
должен использоваться, чтобы сгладить наш список строк:
q)raze read0`:sample.json
"{\"name\":\"John\",\"age\":30,\"cars\":[ \"Ford\", \"BMW\", \"Fiat\" ]}"
Наконец, использование .j.k
в этой строке дает словарь
q).j.k raze read0`:sample.json
name| "John"
age | 30f
cars| ("Ford";"BMW";"Fiat")
Для особенно большого файла JSON может быть более эффективно использовать read1
вместо raze read0
в вашем файле, например.
q).j.k read1`:sample.json
name| "John"
age | 30f
cars| ("Ford";"BMW";"Fiat")
Если вас интересует обратная операция, вы можете использовать .j.j
для преобразования словаря в список строк и использовать 0:
для сохранения.
Дополнительную информацию о пространстве имен .j
можно найти здесь .
Вы также можете увидеть больше примеров на вики Kx read0 , read1 и 0: .