Yet another Go implementation of jo
This is an implementation of jo command written in Go language.
$ gojo foo=bar qux=quux
{"foo":"bar","qux":"quux"}
$ gojo -p foo=bar qux=quux
{
"foo": "bar",
"qux": "quux"
}
$ gojo -a foo bar baz
["foo","bar","baz"]
$ seq 10 | gojo -a
[1,2,3,4,5,6,7,8,9,10]
$ gojo -p foo=$(gojo bar=$(gojo baz=100))
{
"foo": {
"bar": {
"baz": 100
}
}
}
$ gojo -p foo[bar][baz][qux][quux]=128
{
"foo": {
"bar": {
"baz": {
"qux": {
"quux": 128
}
}
}
}
}
$ gojo -p res[foo][][id]=10 res[foo][][id]=20 res[cnt]=2
{
"res": {
"foo": [
{
"id": 10
},
{
"id": 20
}
],
"cnt": 2
}
}
$ gojo -y res[foo][][id]=10 res[foo][][id]=20 res[cnt]=2
res:
foo:
- id: 10
- id: 20
cnt: 2
$ gojo foo=@testdata/file.txt # read contents from file
{"foo":"a\nb\nc\nd\ne"}
$ gojo foo=:testdata/file1.json # json value of file
{"foo":{"x":1,"z":2,"y":3}}
$ gojo foo=%testdata/file.txt # base64 of file contents
{"foo":"YQpiCmMKZAplCg=="}
brew install itchyny/tap/gojo
go install github.com/itchyny/gojo/cmd/gojo@latest
- Implemented in Go and Go-gettable, also useful for library usage.
- Implements nested paths (example:
foo[x][y][z]=1
,foo[][][]=1
). - Implements YAML output option
-y
(example:gojo -y foo=1
outputsfoo: 1
). - Drops support of
k@v
syntax (usek=true
ork=false
) and type guessing flags. - Does not print duplicate keys (although duplicate key in JSON is valid, it's not that useful and overwritten by the latter).
Report bug at Issues・itchyny/gojo - GitHub.
itchyny (https://github.com/itchyny)
This software is released under the MIT License, see LICENSE.