Person edit
JQ is short for Jamshed Qureshi.Software edit
Description
jq
is also a command-line tool for *nix and Windows for manipulating JSON data.dbohdan 2015-01-29: You can use jq from Tcl, which can be faster than using Tcllib JSON when you only need a few values from a large JSON blob. It understands complex queries (called "filters") from .weather[0].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 that works in Tcl 8.5+ and Jim Tcl. Note that ::jq::json2dict is generally slower than ::json::json2dict (37 vs. 21 seconds to process a 10 MiB JSON file in Tcl 8.6.3). It is provided for the convenience of not having to import another package as well as for when you want- your JSON arrays to be converted to dicts with integer keys (e.g., ["a", "b", "c"] to {0 a 1 b 2 c} rather than {a b c});
- a JSON parser in Jim Tcl faster than the recursive one from jimhttp.
Download command
Download the module with wiki-reaper: wiki-reaper 11630 0 17 > jq-0.4.0.tm.Module source code
# jq-0.4.0.tm
# To use this module you need jq version 1.5rc1 or later installed.
namespace eval jq {
proc jq {filter data {options {-r}}} {
exec jq {*}$options $filter << $data
}
proc json2dict {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
| gsub("{"; "\\{")
| gsub("}"; "\\}")
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.


