JQ is short for Jamshed Qureshi
jq is also a command-line tool for *nix and Windows.
dbohdan 2015-01-29: You can use jq from Tcl. It is somewhat faster than the Tcllib JSON package and understands complex queries (called "filters") from .weather0.description to paths | map(tostring) | join("/") | unique to the one defined in the module below.
What follows is a small Tcl module to run jq. If you only need a few values from a large JSON blob then running filters in jq itself is going to be noticeably faster than converting the data to a dictionary and using dict get to access it.
# jq-0.2.tm namespace eval jq { proc jq {filter data {options {-r}}} { exec -- jq {*}$options $filter << $data } proc 2dict {data} { jq { def totcl: if type == "array" then # Convert array to object with keys 0, 1, 2... and process # it as object. [range(0;length) as $i | {key: $i | tostring, value: .[$i]}] | from_entries | totcl elif type == "object" then . | to_entries | map("{\(.key)} {\(.value | totcl)}") | join(" ") else tostring | split("{") | join ("\\{") | split("}") | join ("\\}") end; . | totcl } $data } }
dbohdan: I hope Jamshed doesn't mind me using this page. If he objects I will create a separate page for jq the program.