jkit get
按点分路径在 JSON 中走一遍,打印路径终点的值。
bash
jkit get <path> # 全名
jkit g <path> # 短别名命令格式
jkit get <path>
jkit g <path>| 参数 | 说明 |
|---|---|
<path> | 用 . 分隔的路径。对象用字符串 key,数组用整数下标。 |
从 stdin 或剪贴板读取 —— 详见 输入来源。
行为说明
- 一段一段地走路径。
- 对象:把段当作 key 查找。
- 数组:把段解析为整数下标。
- 字符串叶子:打印裸字符串(不带引号),方便管道喂给其他工具。
- 其他类型(数字、布尔、
null、对象、数组):按合法 JSON 字面量打印。
示例
走进嵌套对象
bash
> echo '{"user":{"name":"alice","age":30}}' | jkit g user.name
alice
> echo '{"user":{"name":"alice","age":30}}' | jkit g user.age
30数组下标
bash
> echo '{"items":[{"id":1},{"id":2},{"id":3}]}' | jkit g items.1.id
2返回子树
当目标值不是标量时,jkit g 用 4 空格缩进格式化输出:
bash
> echo '{"items":[{"id":1,"name":"x"},{"id":2,"name":"y"}]}' | jkit g items.0
{
"id": 1,
"name": "x"
}与 shell 工具组合
字符串叶子裸打印,所以 jkit g 能很自然地和 xargs、read、awk 等组合:
bash
> curl -s https://api.example.com/user | jkit g name | xargs -I{} echo "Hello, {}!"
Hello, alice!错误处理
错误信息会带出错的路径,方便排查:
bash
> echo '{"a":1}' | jkit g missing
jkit: key "missing" not found at missing
> echo '{"items":[1,2,3]}' | jkit g items.99
jkit: index 99 out of range [0, 3) at items.99
> echo '{"items":[1,2,3]}' | jkit g items.abc
jkit: array index must be integer at items.abc, got "abc"
> echo '{"a":1}' | jkit g a.b
jkit: cannot descend into json.Number at a.b