jq - command-line JSON processor

jq - command-line JSON processor

jq 就像是 linux 下的 sed 命令一样,不过他是用来处理 json 文件的

你可以在命令行下很简单的操作 json 数据,就像操作对象一样,可以很方便的格式化,分片,过滤,映射、转换这些数据

Install

use brew install jq in osx
or
http://stedolan.github.io/jq/download/ for other systems

$ more answer.json

{“author”: {“name”: “\u6797\u6d9b”, “headline”: “Web Developer, Djangonaut”, “gender”: 1, “url”: “https://api.zhihu.com/people/36543facf06106e0060cbbbfc0e57cad”, “avatar_url”: “http://p1.zhimg.com/00/eb/00ebde2fd_s.jpg”, “type”: “people”, “id”: “36543facf06106e0060cbbbfc0e57cad”}, “url”: “https://api.zhihu.com/answers/16843820”, “excerpt”: “Twenty years from now you will be more disappointed by the things you did\u2026”, “question”: {“url”: “https://api.zhihu.com/questions/20996047”, “type”: “question”, “id”: 20996047, “title”: “\u5230\u5e95\u662f\u4f1a\u4e3a\u505a\u4e86\u7684\u4e8b\u60c5\u540e\u6094\u8fd8\u662f\u4f1a\u4e3a\u4e0d\u505a\u7684\u4e8b\u60c5\u540e\u6094\uff1f”}, “updated_time”: 1367133216, “content”: “Twenty years from now you will be more disappointed by the things you didn’t do than by the ones you did. So throw off the bowlines, Sail away from the safe harbor. Catch the trade winds in your sails. Explore. Dream. Discover. – Mark Twain”, “comment_count”: 1, “type”: “answer”, “id”: 16843820, “voteup_count”: 22}

这是一个来自知乎的答案信息,内容没有被空格及换行分隔,很难看懂

jq 的 filter ‘.’ 可以帮我们格式化,如下

格式化

$ cat answer.json | jq '.'

{
  "voteup_count": 22,
  "id": 16843820,
  "author": {
    "id": "36543facf06106e0060cbbbfc0e57cad",
    "type": "people",
    "avatar_url": "http://p1.zhimg.com/00/eb/00ebde2fd_s.jpg",
    "url": "https://api.zhihu.com/people/36543facf06106e0060cbbbfc0e57cad",
    "gender": 1,
    "headline": "Web Developer, Djangonaut",
    "name": "林涛"
  },
  "url": "https://api.zhihu.com/answers/16843820",
  "excerpt": "Twenty years from now you will be more disappointed by the things you did…",
  "question": {
    "title": "到底是会为做了的事情后悔还是会为不做的事情后悔?",
    "id": 20996047,
    "type": "question",
    "url": "https://api.zhihu.com/questions/20996047"
  },
  "updated_time": 1367133216,
  "content": "Twenty years from now you will be more disappointed by the things you didn't do than by the ones you did. So throw off the bowlines, Sail away from the safe harbor. Catch the trade winds in your sails. Explore. Dream. Discover. -- <i>Mark Twain</i>",
  "comment_count": 1,
  "type": "answer"
}

获取答案 id

$ cat answer.json | jq '.id'

16843820

获取答案 id 和内容

$ cat answer.json | jq '{id, content}'

{
  "content": "Twenty years from now you will be more disappointed by the things you didn't do than by the ones you did. So throw off the bowlines, Sail away from the safe harbor. Catch the trade winds in your sails. Explore. Dream. Discover. -- <i>Mark Twain</i>",
  "id": 16843820
}

获取作者姓名

$ cat answer.json | jq '.author | {name}'

{
  "name": "林涛"
}

    用法非常之多,详见

    http://stedolan.github.io/jq/manual/


转载于:https://my.oschina.net/u/2268184/blog/344731

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
jq - commandline JSON processor [version 1.6] Usage: jq-linux64 [options] <jq filter> [file...] jq-linux64 [options] --args <jq filter> [strings...] jq-linux64 [options] --jsonargs <jq filter> [JSON_TEXTS...] jq is a tool for processing JSON inputs, applying the given filter to its JSON text inputs and producing the filter's results as JSON on standard output. The simplest filter is ., which copies jq's input to its output unmodified (except for formatting, but note that IEEE754 is used for number representation internally, with all that that implies). For more advanced filters see the jq(1) manpage ("man jq") and/or https://stedolan.github.io/jq Example: $ echo '{"foo": 0}' | jq . { "foo": 0 } Some of the options include: -c compact instead of pretty-printed output; -n use `null` as the single input value; -e set the exit status code based on the output; -s read (slurp) all inputs into an array; apply filter to it; -r output raw strings, not JSON texts; -R read raw strings, not JSON texts; -C colorize JSON; -M monochrome (don't colorize JSON); -S sort keys of objects on output; --tab use tabs for indentation; --arg a v set variable $a to value <v>; --argjson a v set variable $a to JSON value <v>; --slurpfile a f set variable $a to an array of JSON texts read from <f>; --rawfile a f set variable $a to a string consisting of the contents of <f>; --args remaining arguments are string arguments, not files; --jsonargs remaining arguments are JSON arguments, not files; -- terminates argument processing;

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值