KDB:如何解析json文件?

Ril*_*Hun 0 parsing json dictionary kdb

我以JSON格式创建了一个配置文件,我想使用KDB来将其作为字典读取。

在Python中,非常简单:

with open('data.json') as f:
    data = json.load(f)
Run Code Online (Sandbox Code Playgroud)

KDB中有类似的功能吗?

Jem*_*and 5

要将JSON文件读入kdb +,应使用read0。这将文件的行作为字符串列表返回。

q)read0`:sample.json
,"{"
"\"name\":\"John\","
"\"age\":30,"
"\"cars\":[ \"Ford\", \"BMW\", \"Fiat\" ]"
,"}"
Run Code Online (Sandbox Code Playgroud)

kdb +允许使用.j名称空间将JSON对象反序列化(和序列化)为字典。内置的.j.k期望包含json的单个字符串,并将其转换为字典。raze应该使用A 来展平我们的字符串列表:

q)raze read0`:sample.json
"{\"name\":\"John\",\"age\":30,\"cars\":[ \"Ford\", \"BMW\", \"Fiat\" ]}"
Run Code Online (Sandbox Code Playgroud)

最后,.j.k在此字符串上使用将产生字典

q).j.k raze read0`:sample.json
name| "John"
age | 30f
cars| ("Ford";"BMW";"Fiat")
Run Code Online (Sandbox Code Playgroud)

对于特别大的JSON文件,使用它可能read1raze read0在您的文件上更有效,例如

q).j.k read1`:sample.json
name| "John"
age | 30f
cars| ("Ford";"BMW";"Fiat")
Run Code Online (Sandbox Code Playgroud)

如果您对反向操作感兴趣,可以使用.j.j将字典转换为字符串列表并0:保存。

有关.j名称空间的更多信息,请参见此处。您还可以在Kx Wiki上阅读read0read10:的更多示例。