jq 一个强悍的json格式化查看工具

本文来自网易云社区

作者:娄超

在web 2.0时代json这种直观、灵活、高效数据格式基本已经成为一种标准格式,从各种web api,到配置文件,甚至现在连mysql都开始支持json作为数据类型。

但是在平时开发运维中往往因为格式问题或者输出数据太多,体验不是很爽,之前我就经常需要借助一些json自动语法检查、格式化、分层折叠的工具(如http://www.bejson.com/ ), 往往还是需要来回拷贝,还是觉得很麻烦。

所以,一直希望有个linux命令行的简单命令(python的json.tool模块只能格式化显示),偶然发现了这个jq的小工具,感觉很强大,就分享一下。

不说废话了,直接例子说明吧

使用说明

1、格式化json数据

echo ‘{"kind": "Service", "apiVersion": "v1", "status": {"loadBalancer": true}}‘|jq .{  "kind": "Service",  "apiVersion": "v1",  "status": {    "loadBalancer": true
  }}

只要3个字母搞定,其中jq是工具命令,后面参数是过滤选择参数,"." 表示直接输出完整的json数据。

Usage: jq [options]  [file...]

2. 过滤出需要的字段信息

cat service.json
{    "kind": "Service",    "apiVersion": "v1",    "metadata": {        "name": "kubernetes",        "namespace": "default",
    },    "spec": {        "ports": [
            {                "protocol": "TCP",                "port": 443,                "targetPort": 443,                "nodePort": 0
            }
        ],
.....很多数据
}
cat service.json|jq .metadata.name"kubernetes"

3、过滤出某个数组对象

cat service.json|jq .spec.ports[0]  
{  "protocol": "TCP",  "port": 443,  "targetPort": 443,  "nodePort": 0}

4、使用管道过滤并调整输出

cat service.json|jq  ".spec.ports[0]| {srcPort: .port, targetPort: .targetPort}"    {  "srcPort": 443,  "targetPort": 443}

如果数据的下标为不填,将输出所有数组的过滤值,如 cat service.json|jq ".spec.ports[]| {srcPort: .port, targetPort: .targetPort}"

5、 自定义输出数组

cat t.json
{  "parents": [
    {      "sha": "54b9c9bdb225af5d886466d72f47eafc51acb4f7",      "url": "https://api.github.com/repos/stedolan/jq/commits/54b9c9bdb225af5d886466d72f47eafc51acb4f7",      "html_url": "https://github.com/stedolan/jq/commit/54b9c9bdb225af5d886466d72f47eafc51acb4f7"
    },
    {      "sha": "8b1b503609c161fea4b003a7179b3fbb2dd4345a",      "url": "https://api.github.com/repos/stedolan/jq/commits/8b1b503609c161fea4b003a7179b3fbb2dd4345a",      "html_url": "https://github.com/stedolan/jq/commit/8b1b503609c161fea4b003a7179b3fbb2dd4345a"
    }
  ]
}
cat t.json|jq ‘ { html_urls: [.parents[].html_url]}‘{  "html_urls": [    "https://github.com/stedolan/jq/commit/54b9c9bdb225af5d886466d72f47eafc51acb4f7",    "https://github.com/stedolan/jq/commit/8b1b503609c161fea4b003a7179b3fbb2dd4345a"
  ]
}

6、支持条件查询

举个简单例子,只输出tcp协议端口信息

cat service.json|jq .spec.ports[0]  
{  "protocol": "TCP",  "port": 443,  "targetPort": 443,  "nodePort": 0}cat service.json |jq ‘if .spec.ports[0].protocol = "tcp" then .spec.ports[0] else "not tcp" end‘

注意jq 的语法有点奇怪, 必须 if else 同时存在,数字相等是用 "==",字符串是"="

总之,jq 功能是很强大的,它是一个c语言写的小工具,包括很多正则匹配,更多高级使用方法,见 https://stedolan.github.io/jq/manual/

安装说明

Debian and Ubuntu 下

原文地址:https://www.cnblogs.com/163yun/p/9626718.html

时间: 2024-10-07 17:24:59

jq 一个强悍的json格式化查看工具的相关文章

JSON 格式化 查看

1, 本地使用: sublime 插件 PettyJSON, 安装后快捷键为 : Ctrl + Alt +J (格式化) , Ctrl + Alt +M (取消格式化) . 2,在线使用: http://json.parser.online.fr/ , 最漂亮好看的Json查看网站.打开网站,粘贴Json字符串即可.比Sublime具备更多颜色,看着舒心,更推荐使用这个.

JSON格式化着色小工具

在我们系统开发过程中越来越多的使用JSON作为数据交换的载体.JSON的特点是层次结构简洁清晰,易于人阅读和编写.同时也易于机器解析和生成.对于机器解析和生成这点本人表示认可,然而对于易于人阅读和编写可以通过下面一段JSON字符串来验证下: {"strValue":"here is str value","nullValue":null,"intvalue":999,"doublevalue":999,&q

校验字符串是否是JSON格式,将不规则展示的json格式的字符串进行规则展示(json格式化)

版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] [html] view plain copy var str = {"code": "","svcname": "","version": "","component": "","category": "","requestMs

iOS及时log日志查看工具 (iConsole)

github下载地址:https://github.com/nicklockwood/iConsole 偶然看到的一个iOS及时log日志查看工具,通过该工具,我们可以在任何想看日志的时候,通过手势呼出log日志页,查看app的crash信息或者其他信息.另外,也可以通过查看代码的实现方式,学习在window中,响应手势,这样不管我们进入什么页面,都能呼出iConsole的页面. 希望通过此工具,对各位与iOS有关的朋友提供帮助. Purpose iConsole is a simple, pl

json格式化和查看工具

以前一直以来都觉得xml个可读性要比json的可读性好,后来使用了JSON Viewer这个小工具之后,发现自己错了.之前认为json的可读性差,完全是因为没有很好的查看工具.JSON Viewer这个小工具可以很方便的查看json数据. 点击Format可以方便的将凌乱的json格式化. 如果json格式不正确,能够得到很好的提示. 方便的查看键值对. 对数据内容进行查询.

JSON在线解析及格式化校验工具 jsonin.com

JSON在线解析及格式化校验工具 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它使得人们很容易的进行阅读和编写.同时也方便了机器进行解析和生成.它是基于 JavaScript Programming Language , Standard ECMA-262 3rd Edition - December 1999 的一个子集. JSON采用完全独立于程序语言的文本格式,但是也使用了类C语言的习惯(包括C, C++, C#, Java, JavaSc

使用nodejs、ejsExcel、express、vuejs编写一个excel转json的工具——第一步:创建一个包含webpack的vuejs项目

最近开发一个h5的游戏,需要一个excel转json的工具,网上找了找,没有发现适合的工具.想到自己之前用nodejs.express和vuejs做过一个网站,也用过ejsExcel插件,于是自己动手做了一个.这里简单的记录一下开发过程,给自己留个纪念. 这是本系列的第一篇博客,从新建项目开始吧. 1.需要按照nodejs和vuejs 安装的方法这里不提了,网上找一找,教程很多. 安装好了可以看一下nodejs.vuejs和express的版本号: 2.使用vuejs创建一个带webpack的项

推荐一个zookeeper信息查看工具

zookeeper信息查看工具 下载地址:https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip 解压,打开: ZooInspector\build\zookeeper-dev-ZooInspector.jar 参考: http://blog.csdn.net/atco/article/details/13628523 转载请标明出处: 2015.6.30 版权声明:本文为博主原创文章,未经博主允许不得

LogViewer - 方便的日志查看工具

一个完整的程序日志记录功能是必不可少的,通过日志我们可以了解程序运行详情.错误信息等,以便更好的发现及解决问题. 日志可以记录到数据库.日志服务器.文件等地方,本文主要介绍文件日志. 文件日志通常是一个文本文件,有记录日期.日志内容等,不同软件生成的日志格式有所不同,我喜欢使用如下格式的日志: [2016-09-19 09:00:17.9785] - [Info] - [ImmediateLogger]您好,欢迎您使用 TaskHosting V1.19 一条日志由2行组成,第1行为日志头,第2