https://github.com/skanehira/tson)
Original repository is no longer to develop by his author.(This fork fixed an error when using
tson
tson
is JSON viewer and editor written in Go.
This tool displays JSON as a tree and you can search and edit key or values.
Support OS
- Mac
- Linux
Installation
$ git clone https://github.com/skanehira/tson
$ cd tson && go install
Usage
# from file
$ tson < test.json
# from pipe
$ curl -X POST http://gorilla/likes/regist | tson
# from url(only can use http get mthod)
$ tson -url http://gorilla/likes/json
tson
as a library in your application
Use You can use tson in your application as following.
package main
import (
"fmt"
tson "github.com/skanehira/tson/lib"
)
func main() {
j := []byte(`{"name":"gorilla"}`)
// tson.Edit([]byte) will return []byte, error
res, err := tson.Edit(j)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(res))
}
Keybinding
JSON tree
key | description |
---|---|
j | move down |
k | move up |
g | move to the top |
G | move to the bottom |
ctrl-f | page up |
ctrl-b | page down |
h | hide current node |
H | collaspe value nodes |
l | expand current node |
L | expand all nodes |
r | read from file |
s | save to file |
a | add new node |
A | add new value |
d | clear children nodes |
e | edit json with $EDITOR |
q | quit tson |
Enter | edit node |
/ or f | search nodes |
? | show helps |
space | expand/collaspe children nodes |
ctrl-j | move to next parent node |
ctrk-k | move to next previous node |
ctrl-c | quit tson |
help
key | description |
---|---|
j | move down |
k | move up |
g | move to the top |
G | move to the bottom |
ctrl-f | page up |
ctrl-b | page down |
q | close help |
About editing nodes
When editing a node value, the JSON value type is determined based on the value.
For example, after inputed 10.5
and saving the JSON to a file, it will be output as a float type 10.5
.
If the value sorround with "
, it will be output as string type always.
The following is a list of conversion rules.
input value | json type |
---|---|
gorilla |
string |
10.5 |
float |
5 |
int |
true or false |
boolean |
null |
null |
"10" or "true" |
string |
About adding new node
You can use a
to add new node with raw json string.
For expample, you have following tree.
{array} <- your cursor in there
├──a
├──b
└──c
If you input {"name":"gorilla"}
and press add button,
then you will get new tree as following.
{array} <- your cursor in there
├──a
├──b
├──c
└──{object}
└──name
└──gorilla
Also, You can use A
to add new value to current node.
For example, you have following tree.
{object} <- your cursor in there
└──name
└──gorilla
If you input {"age": 26}
and press add button,
then you will get new tree as following.
{object} <- your cursor in there
├──name
│ └──gorilla
└──age
└──26
Author
skanehira