JSON Tools

jaq – clone of the JSON data processing tool

jaq is a jq clone focused on correctness, speed, and simplicity.

It aims to support a large subset of jq’s syntax and operations.

This is free and open source software.

Key Features

  • Basics:
    • Identity (.)
    • Recursion (..)
    • Basic data types (null, boolean, number, string, array, object)
    • if-then-else (if .a < .b then .a else .b end)
    • Folding (reduce .[] as $x (0; . + $x), foreach .[] as $x (0; . + $x; . + .))
    • Error handling (try … catch …)
    • String interpolation (“The successor of \(.) is \(.+1).”)
    • Format strings (@json, @text, @csv, @tsv, @html, @sh, @base64, @base64d)
  • Paths:
    • Indexing of arrays/objects (.[0], .a, .[“a”])
    • Iterating over arrays/objects (.[])
    • Optional indexing/iteration (.a?, .[]?)
    • Array slices (.[3:7], .[0:-1])
    • String slices
  • Operators:
    • Composition (|)
    • Binding (. as $x | $x)
    • Concatenation (,)
    • Plain assignment (=)
    • Update assignment (|=, +=, -=)
    • Alternation (//)
    • Logic (or, and)
    • Equality and comparison (.a == .b, .a < .b)
    • Arithmetic (+, -, *, /, %)
    • Negation (-)
    • Error suppression (?)
  • Definitions:
    • Basic definitions (def map(f): [.[] | f];)
    • Recursive definitions (def r: r; r)
  • Core filters:
    • Empty (empty)
    • Errors (error)
    • Input (inputs)
    • Length (length, utf8bytelength)
    • Rounding (floor, round, ceil)
    • String <-> JSON (fromjson, tojson)
    • String <-> integers (explode, implode)
    • String normalisation (ascii_downcase, ascii_upcase)
    • String prefix/postfix (startswith, endswith, ltrimstr, rtrimstr)
    • String splitting (split(“foo”))
    • Array filters (reverse, sort, sort_by(-.), group_by, min_by, max_by)
    • Stream consumers (first, last, range, fold)
    • Stream generators (range, recurse)
    • Time (now, fromdateiso8601, todateiso8601)
    • More numeric filters (sqrt, sin, log, pow, …) (list of numeric filters)
  • Standard filters:
    • These filters are defined via more basic filters. Their definitions are at std.jq.
    • Undefined (null)
    • Booleans (true, false, not)
    • Special numbers (nan, infinite, isnan, isinfinite, isfinite, isnormal)
    • Type (type)
    • Filtering (select(. >= 0))
    • Selection (values, nulls, booleans, numbers, strings, arrays, objects, iterables, scalars)
    • Conversion (tostring, tonumber)
    • Iterable filters (map(.+1), map_values(.+1), add, join(“a”))
    • Array filters (transpose, first, last, nth(10), flatten, min, max)
    • Object-array conversion (to_entries, from_entries, with_entries)
    • Universal/existential (all, any)
    • Recursion (walk)
    • I/O (input)
    • Regular expressions (test, scan, match, capture, splits, sub, gsub)
    • Time (fromdate, todate)
  • Numeric filters – imports many filters from libm and follows their type signature.

Website: github.com/01mf02/jaq
Support:
Developer: Michael Färber
License: MIT License

jaq help

jaq is written in Rust. Learn Rust with our recommended free books and free tutorials


Related Software

JSON Tools
jqLightweight and flexible JSON processor. It's like sed for JSON
fxJSON viewer with streaming and mouse support
jaqjq clone focused on correctness, speed, and simplicity.
gronTransforms JSON into discrete assignments to make it easier to grep
gojqPure Go implementation of jq
jlessCommand-line JSON viewer written in Rust
jnvNavigates JSON offering a viewer and filter editor
JSON EditorView, edit, format, and validate JSON
DaselQuery, modify and transform structured data
jidJSON incremental digger by using filtering queries
joSmall utility to create JSON objects
jsonrepairRepair malformed and invalid JSON documents
faqBilled as a more flexible jq supporting additional formats
jelloFilter JSON and JSON Lines data with Python syntax
qqjq but an interoperable configuration format transcoder
json-tuiJSON terminal UI
jqpTUI playground to experiment with jq
emutoSmall language for manipulating and restructuring JSON and other data
svelte-jsoneditorView, edit, format, transform, and validate JSON
qoQuery JSON, CSV, and TSV files using SQL
jqlQuery and process JSON data
JaniceDesktop app for viewing large JSON files
unqeryQuery and transform JSON data
TwigTerminal JSON viewer and YAML viewer
jtcExtract, manipulate and transform source JSON
pyfxPython-native TUI JSON viewer
OTreeInteractive viewer for structured data
kirillJSON validator
jshonParses, reads and creates JSON. It's designed to be as usable as possible
jsawkLike awk, but for JSON
jiqInteractive JSON query tool

Read our verdict in the software roundup.

Alternatives to jq
fxJavaScript Object Notation (JSON) viewer with streaming and mouse support
gojqPure Go implementation of jq
jelloFilter JSON and JSON Lines data with Python syntax
jlessCommand-line JSON viewer written in Rust
emutoSmall language for manipulating and restructuring JSON and other data files
unqeryQuery and transform JSON data
htmlqLike jq but for HTML
faqBilled as a more flexible jq supporting additional formats
jaqjq clone focused on correctness, speed, and simplicity
qqInteroperable configuration format transcoder with jq query syntax

Best Free and Open Source Software LinuxLinks helps you discover the best free and open source software for Linux. Explore our extensive collection of recommended applications, including alternatives to popular proprietary software.

We also publish software reviews, Linux tutorials, hardware reviews, free programming books and articles covering the wider open source community. Browse our Linux resources to discover more.

Know a useful free and open source Linux application we haven't covered? Suggest a program for inclusion.

Has your software been featured on LinuxLinks? Display one of our Featured on LinuxLinks badges on your website or GitHub README.
Subscribe

Please read our Comment Policy before commenting.

Notify of
guest
0 Comments
Oldest
Newest Most Voted