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
jidJSON incremental digger by using filtering queries
joSmall utility to create JSON objects
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
jiqInteractive JSON query tool
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
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
kirillJSON validator
jshonParses, reads and creates JSON. It's designed to be as usable as possible
jsawkLike awk, but for JSON
jqpTUI playground to experiment with jq

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 Explore our comprehensive directory of recommended free and open source software. Our carefully curated collection spans every major software category.

This directory is part of our ongoing series of informative articles for Linux enthusiasts. It features hundreds of detailed reviews, along with open source alternatives to proprietary solutions from major corporations such as Google, Microsoft, Apple, Adobe, IBM, Cisco, Oracle, and Autodesk.

You’ll also find interesting projects to try, hardware coverage, free programming books and tutorials, and much more.

Discovered a useful open source Linux program that we haven’t covered yet? Let us know by completing this form.
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments