比如我 有一个 test.json 文件 ,
{
"code":200,
"data":[
{ "name":"name1", "age":"1" },
{ "name":"name2", "age":"2" },
{ "name":"name3", "age":"3" }
]
}
操作 1 cat test.json | tools .data.map(x=>x.name)
读到的结果就是
[
"name1",
"name2",
"name3",
"name4"
]
操作 2 cat test.json | tools .data.filter(x=>x.age>1)[0]
读到的结果就是
{
"name": "name2",
"age": "2"
}
并且在 操作的工程中 点 data, 点 filter ,点 x.age 这些字段 会根据 json 文件 自动补全出来
jq https://stedolan.github.io/jq/tutorial/ 这个工具 语法和 js 不一样,而且 他好像 没有补全 ,我没有用明白 。。。
fx https://github.com/antonmedv/fx 这个工具 js 版本 是有个 交互模式 ,
可以用 js 的语法, 已经和我要的很像了 ,但是 他的 js 的关键字还有 json 的 field 不能补全
而且 最新版本是拿 golang 重写了 ,竟然把这个 交互模式 的特性去掉了……
所以想问有没有 满足我这个需求的工具呢?
1
christin 2022-07-23 21:51:35 +08:00 via iPhone
自己用 js 写一个?
|
2
wxf666 2022-07-24 02:59:14 +08:00
用过 jq ,语法是有点绕,功能还算凑合。好像是没有交互,自然也没有补全
$ jq '.data[].name' test.json "name1" "name2" "name3" $ jq -r '[.data[].name]' test.json [ "name1", "name2", "name3" ] |
3
wxf666 2022-07-24 03:03:40 +08:00 1
噢,还有个操作二
$ jq '[.data[] | select(.age | tonumber > 1)][0]' test.json { "name": "name2", "age": "2" } |
4
975779964 OP @wxf666 啊, 这个看着就头疼 ,还得学习 jq 的语法 ,那应该是 没有 这样的工具了 ,我还是先用 fx 吧
|