Skip to content

The .j namespace

JSON serialization

The .j namespace contains functions for converting between JSON and q dictionaries.

The .j namespace is reserved for use by Kx, as are all single-letter namespaces.

Consider all undocumented functions in the namespace as its private API – and do not use them.

.j.j (serialize)

.j.j x

Where x is a K object, returns a string representing it in JSON.

.j.jd (serialize infinity)

.j.jd (x;d)

Where

  • x is a K object
  • d is a dictionary

returns the result of .j.j unless d`null0w, in which case 0w and -0w are mapped to "null". (Since V3.6 2018.12.06.)

q).j.j -0w 0 1 2 3 0w
"[-inf,0,1,2,3,inf]"
q).j.jd(-0w 0 1 2 3 0w;()!())
"[-inf,0,1,2,3,inf]"
q).j.jd(-0w 0 1 2 3 0w;(!). 1#'`null0w,1b)
"[null,0,1,2,3,null]"

.j.k (deserialize)

.j.k x

Where x is a string containing JSON, returns a K object.

q).j.k 0N!.j.j `a`b!(0 1;("hello";"world"))        / dictionary
"{\"a\":[0,1],\"b\":[\"hello\",\"world\"]}"
a| 0       1
b| "hello" "world"
q).j.k 0N!.j.j ([]a:1 2;b:`Greetings`Earthlings)   / table
"[{\"a\":1,\"b\":\"Greetings\"},{\"a\":2,\"b\":\"Earthlings\"}]"
a b
--------------
1 "Greetings"
2 "Earthlings"

Note serialization and deserialization to and from JSON may not preserve q datatype