在命令行上过滤JSON

在命令行上过滤JSON,json,command-line-interface,Json,Command Line Interface,我想在命令行上过滤JSON 任务:打印json列表中每个字典的“名称” json示例: [ { "id":"d963984c-1075-4d25-8cd0-eae9a7e2d130", "extra":{ "foo":false, "bar":null }, "created_at":&q

我想在命令行上过滤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
我问过,但他们告诉我,在这里问会更有意义。

你可以使用jq

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