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
  • SurveyJS - Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • 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

  • SurveyJS

    Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App. With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.

    SurveyJS logo
  • 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?

    https://github.com/Juniper/libxo

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • 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