about summary refs log tree commit diff
path: root/json.k
diff options
context:
space:
mode:
Diffstat (limited to 'json.k')
-rw-r--r--json.k24
1 files changed, 24 insertions, 0 deletions
diff --git a/json.k b/json.k
new file mode 100644
index 0000000..070fa9f
--- /dev/null
+++ b/json.k
@@ -0,0 +1,24 @@
+\d .j
+
+/ taken from http://kx.com/q/e/json.k
+
+/[]{} Cbg*xhijefcspmdznuvt
+q:"\"";s:{q,x,q};J:(($`0`1)!$`false`true;s;{$[#x;x;"null"]};s;{s@[x;&"."=8#x;:;"-"]};s)1 2 5 11 12 16h bin
+j:{$[10=abs t:@x;s@,/{$[x in r:"\t\n\r\"\\";"\\","tnr\"\\"r?x;x]}'x;99=t;"{",(","/:(j'!x),'":",'j'. x),"}";-1<t;"[",($[98=t;",\n ";","]/:.Q.fc[j']x),"]";J[-t]@$x]}
+
+/enclose
+e:{(*x),(","/:y),*|x};a:"\t\n\r\"\\";f:{$[x in a;"\\","tnr\"\\"a?x;x]}
+j:{$[10=abs t:@x;s$[|/x in a;,/f'x;x];99=t;e["{}"](j'!x),'":",'j'. x;-1<t;e["[]"].Q.fc[j']x;J[-t]@$x]}
+
+/disclose
+v:{=\~("\\"=-1_q,x)<q=x};d:{$[1<n:(s:+\v[x]*1 -1 1 -1"{}[]"?x)?0;1_'(0,&(v[x]&","=x)&1=n#s)_x:n#x;()]}
+c:{$["{"=*x;(`$c'n#'x)!c'(1+n:x?'":")_'x:d x;"["=*x;.Q.fc[c']d x;q=*x;$[1<+/v x;'`err;"",. x];"a">*x;"F"$x;"n"=*x;0n;"t"=*x]}
+k:{c x@&~v[x]&x in" \t\n\r"};
+
+\
+
+k j x:([]C:$`as`;b:01b;j:0N 2;z:0Nz,.z.z)
+k j x:"\"a \\"
+k"{},2]"
+
+