2 unstable releases

0.2.0 Nov 24, 2023
0.1.0 Nov 23, 2023

#13 in #json-array

MIT/Apache

24KB
646 lines

About jxcape

jxcape is a tool for creating JSON values from the command line.

Strings

To convert a value into a JSON string, use the string subcommand:

$ jxcape string "Hello, world!"
"Hello, world!"

It can also take input from stdin:

$ echo "Hello, world!" | jxcape string --from-stdin 
"Hello, world!"

Arrays

To convert a value into a JSON array, use the array subcommand:

$ jxcape array 1 2 3
["1","2","3"]

By default, jxscape will treat all input as strings. To treat input as native JSON, use the --auto flag:

$ jxcape array --auto 1 2 3 foo
[1,2,3,"foo"]

Any value that cannot be parsed as JSON will be treated as a string.

It can also take input from stdin:

$ seq 3 | jxcape array --from-stdin
["1","2","3"]

If for some reason you need an empty array, you can use the --empty flag:

$ jxcape array --empty
[]

This is included mostly for completeness.

Objects

To convert a value into a JSON object, use the object subcommand:

$ jxcape object foo=1 bar=2
{"foo":"1","bar":"2"}

By default, jxscape will treat all input as strings. To treat input as native JSON, use the --auto flag:

$ jxcape object --auto foo=1 bar=2 baz=3
{"foo":1,"bar":2,"baz":3}

Any value that cannot be parsed as JSON will be treated as a string.

It can also take input from stdin:

$ env | jxcape object --from-stdin
{"TERM":"xterm-256color","SHELL":"/bin/bash",...} # truncated for brevity

You can specify a custom separator using the --separator flag:

$ jxcape object --separator=: foo:1 bar:2 baz:3
{"foo":"1","bar":"2","baz":"3"}

Separators can be multiple characters:

$ jxcape object --separator=:: foo::1 bar::2 baz::3
{"foo":"1","bar":"2","baz":"3"}

If a key is specified multiple times, the last value to appear will be used:

$ jxcape object foo=1 foo=2 foo=3
{"foo":"3"}

If for some reason you need an empty object, you can use the --empty flag:

$ jxcape object --empty
{}

This is included mostly for completeness.

Pretty Printing

To pretty print a JSON value, use the --pretty flag before the subcommand:

$ jxcape --pretty array 1 2 3
[
  "1",
  "2",
  "3"
]

Installation

From Source

$ git clone https://github.com/rhysparry/jxcape.git
$ cd jxcape
$ cargo install --path .

Dependencies

~1.6–2.6MB
~51K SLoC