Skip to content

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 能很自然地和 xargsreadawk 等组合:

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