Jc – JSONifies the output of many CLI tools

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • Appwrite - The Open Source Firebase alternative introduces iOS support
  • Klotho - AWS Cloud-aware infrastructure-from-code toolbox [NEW]
  • InfluxDB - Access the most powerful time series database as a service
  • Sonar - Write Clean JavaScript Code. Always.
  • gron

    Make JSON greppable!

    Some alternative ideas for making JSON more readable:

    - Pipe into gron (https://github.com/tomnomnom/gron) to get a `foo.bar.baz = val` kind of syntax.

    - Pipe into visidata (https://www.visidata.org/) to get a spreadsheet-like editable view.

  • jc

    CLI tool and python library that converts the output of popular command-line tools, file-types, and common strings to JSON, YAML, or Dictionaries. This allows piping of output to tools like jq and simplifying automation scripts.

    This is one of many inherent issues with using unstructured text as an API. That's why I believe there should be a JSON (or at least some other widely used format[1]) option for tools that have output that would be useful in scripts.

    [0] https://github.com/kellyjonbrazil/jc#locale

    [1] formats should have good library support across many languages and nice filter/query capabilities from the command-line

  • Appwrite

    Appwrite - The Open Source Firebase alternative introduces iOS support . Appwrite is an open source backend server that helps you build native iOS applications much faster with realtime APIs for authentication, databases, files storage, cloud functions and much more!

  • rq

    Record Query - A tool for doing record analysis and transformation (by dflemstr)

  • dasel

    Select, put and delete data from JSON, TOML, YAML, XML and CSV files with a single tool. Supports conversion between formats and can be used as a Go package.

  • spyql

    Query data on the command line with SQL-like SELECTs powered by Python expressions

    This is great!

    I am the author of SPyQL [1]. Combining JC with SPyQL you can easily query the json output and run python commands on top of it from the command-line :-) You can do aggregations and so forth in a much simpler and intuitive way than with jq.

    I just wrote a blogpost [2] that illustrates it. It is more focused on CSV, but the commands would be the same if you were working with JSON.

    [1] https://github.com/dcmoura/spyql

  • autojump

    A cd command that learns - easily navigate directories from the command line

    There's a clash of names between this jc and autojump (https://github.com/wting/autojump) jc (jump to child)

  • libxo

    The libxo library allows an application to generate text, XML, JSON, and HTML output using a common set of function calls. The application decides at run time which output style should be produced.

    Can you trust it? Cli tool output is not exactly stable. I thought that's why libxo exists?


  • Klotho

    AWS Cloud-aware infrastructure-from-code toolbox [NEW]. Build cloud backends with Infrastructure-from-Code (IfC), a revolutionary technique for generating and updating cloud infrastructure. Try IfC with AWS and Klotho now (Now open-source)

  • cosmopolitan

    build-once run-anywhere c library

    But python is also universal? You can just bundle jc inside https://github.com/jart/cosmopolitan/tree/master/third_party... and it's as universal as it gets.

  • specifications

    Specifications related to Jevko. (by jevko)

    A plain Jevko parser simply turns your unicode sequence into a tree which has its fragments as leaves/labels.

    No data types on that level, much like in XML.

    Now above that level there is several ways to differentiate between them.

    The simplest pragmatic way is a kind of type inference: if a text parses as a number, it's a number, if it's "true" or "false", it's a boolean. Otherwise it's a string. If you know the implicit schema of your data then this will be sufficient to get the job done.

    Otherwise you employ a separate schema -- JC in particular has per-parser schemas anyway, so that's covered in this case.

    Or you do "syntax-driven" data types, similar to JSON, e.g. strings start w/ "'".

    Here is a shitty demo: https://jevko.github.io/interjevko.bundle.html

    It shows schema inference from JSON and the schemaless (syntax-driven) flavor.

    Jevko itself is stable and formally specified: https://github.com/jevko/specifications/blob/master/spec-sta...

    It's very easy to write a parser in any language (I've written one in several) and from there start using it.

    However, I am still very much working on specifications for formats above Jevko. I have some recent implementations of the simplest possible format which converts Jevko to arrays/objects/strings:

    * https://github.com/jevko/easyjevko.lua

  • easyjevko.js

    A JavaScript library for Easy Jevko -- a simple data format built on Jevko.

  • interjevko.js

    Experimental Schema-based Minimal Data Interchange with Jevko.

  • jevkoschema.js

    Jevko schema

  • awesome-jsonschema

    A curated list of awesome JSON Schema resources, tutorials, tools, and more.

    You can also run `jc -h --dig` to get the parser details that include the schema.

    Having true JSON Schema[0] is being considered, but on the back-burner due to the sheer number of parsers to build schemas for. Also, it is more difficult to accurately define the schema for a small subset of parsers since their command output are so variable.

    [0] https://json-schema.org/

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts