在命令行过滤 JSON

Filter JSON on the command line

我想在命令行过滤JSON。

任务:打印json列表中每个词典的“名称”。

示例json:

[
   {
      "id":"d963984c-1075-4d25-8cd0-eae9a7e2d130",
      "extra":{
         "foo":false,
         "bar":null
      },
      "created_at":"2020-05-06T15:31:59Z",
      "name":"NAME1"
   },
   {
      "id":"ee63984c-1075-4d25-8cd0-eae9a7e2d1xx",
      "name":"NAME2"
   }
]

期望的输出:

NAME1
NAME2

这个脚本可以工作:

#!/usr/bin/env python

import json
import sys

for item in json.loads(sys.stdin.read()):
    print(item['name'])

但是因为我很懒,所以我正在寻找一个可以减少输入的解决方案。例如在管道中的命令行中:

curl https://example.com/get-json | MAGIC FILTER

我在 code golf 问过,但他们告诉我在这里问更有意义。

你可以使用 jq https://stedolan.github.io/jq/manual/

% curl https://example.com/get-json | jq -r '.[].name'
NAME1
NAME2
  • -r 如果过滤器的结果是字符串,那么它将直接写入标准输出,而不是格式化为带引号JSON 的字符串