在命令行上过滤JSON
我想在命令行上过滤JSON 任务:打印json列表中每个字典的“名称” 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
[
{
"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
如果过滤器的结果是字符串,那么它将直接写入标准输出,而不是格式化为带引号的JSON字符串-r