网站首页 > 技术文章 正文
jq命令允许直接在命令行下对JSON进行操作, 包括分片、过滤、转换等, jq是用C编写, 没有运行时依赖, 所以几乎可以运行在任何系统上。
预编译的二进制文件可以直接在Linux、OS X和windows系统上运行, 当然在linux和OS X系统你需要赋与其可执行权限, 在linux系统中也可以直接用yum安装。
># yum install ja
下载地址:
https://stedolan.github.io/jq/download/
现在先准备json串, 如下kumufengchun.json:
{"name":"kumufengchun","age":"18","city":"beijing","email":"kumufengchun@gmail.com","date":"Thursday","country":"China","company":["baidu","google","alibaba"]}"
test.json:
[{"name":"JSON", "good":true}, {"name":"XML", "good":false}]
1.用jq .直接查看
jq . kumufengchun.json
或者
cat kumufengchun.json | jq .
输出如下:
> # cat kumufengchun.json | jq .
{
"name": "kumufengchun",
"age": "18",
"city": "beijing",
"email": "kumufengchun@gmail.com",
"date": "Thursday",
"country": "China",
"company": [
"baidu",
"google",
"alibaba"
]
}
2.输出某个字段或者某个索引的值
语法:jq '.', 这里key是字段名称
> # jq .name kumufengchun.json
"kumufengchun"
> # jq '.name' kumufengchun.json
"kumufengchun"
> # jq '.company' kumufengchun.json
[
"baidu",
"google",
"alibaba"
]
3.输出数组的值
语法:jq '.[]', 这里value是数组的索引整数值
> # jq '.company[1]' kumufengchun.json
"google"
[root@localhost ~]$ jq '.company[2]' kumufengchun.json
"alibaba"
4.输出列表、数组的一部分, 对其进行切片
语法:jq '.[s:e]',返回的是数组或者列表的index从s开始(包括s)到e结束(不包括e)
> # jq '.company[0:2]' kumufengchun.json
[
"baidu",
"google"
]
也可以省略开始的index, 只有结束的index, 如下, 仍然是不包括结束index的值:
> # jq '.company[:3]' kumufengchun.json
[
"baidu",
"google",
"alibaba"
]
也可以省略结束的index, 只有开始的index, 如下, 输出到最后:
> # jq '.company[1:]' kumufengchun.json
[
"google",
"alibaba"
]
开始的索引也可以是负数, 表示从后边倒着数, 从-1开始数:
> # jq '.company[-2:]' kumufengchun.json
[
"google",
"alibaba"
]
5.循环输出所有的值, 如数组嵌套
语法:jq '.[]'
> # jq '.[]' test.json
{
"name": "JSON",
"good": true
}
{
"name": "XML",
"good": false
}
> # jq '.[]' kumufengchun.json
"kumufengchun"
"18"
"beijing"
"kumufengchun@gmail.com"
"Thursday"
"China"
[
"baidu",
"google",
"alibaba"
]
6.输出多个索引的值, 可以用逗号分割
语法: jq '.key1,.key2'
> # jq '.name,.age' kumufengchun.json
"kumufengchun"
"18"
> # jq '.date,.company[]' kumufengchun.json
"Thursday"
"baidu"
"google"
"alibaba"
如果是数组, 用中括号括起来要输出的键值, 键值先写谁, 先输出谁
> # jq '.company[2,0]' kumufengchun.json
"alibaba"
"baidu"
7.用管道符号|可以对其进行再次处理
语法:jq .[] | .
> # jq '.[]|.name' test.json
"JSON"
"XML"
8.括号的作用
> # echo 1 | jq '(.+2)*5'
15
> # echo {1,2,3} | jq '(.+2)*5'
15
20
25
9.length求长度
如果是字符串是求的字符串的长度, 如果是数组则求得是数组的长度
> # cat kumufengchun.json | jq '.[] | length'
12
2
7
22
8
5
3
10.输出所有的keys
语法: jq keys
> # cat kumufengchun.json | jq 'keys'
[
"age",
"city",
"company",
"country",
"date",
"email",
"name"
]
输出数组的keys:
> # cat kumufengchun.json | jq '.company | keys'
[
0,
1,
2
]
11.判断存不存在某个键
> # cat kumufengchun.json | jq 'has("email")'
true
> # cat kumufengchun.json | jq 'has("address")'
false
- 上一篇: 经典问题探讨:Java中为什么只有值传递?
- 下一篇: 每日分享- jquery 如何将类数组转为数组
猜你喜欢
- 2024-10-23 「jQuery-5」 JavaScript对象和json
- 2024-10-23 超级好用的轻量级JSON处理命令jq(jsonpath js)
- 2024-10-23 $.ajax()常用方法详解(推荐)(ajax详细讲解)
- 2024-10-23 Jquery相关(jqueryui)
- 2024-10-23 jQuery知识点总结(jquery的认识)
- 2024-10-23 前端工程师面试题汇总(前端工程师面试题汇总怎么写)
- 2024-10-23 jQuery基础教程学习笔记(二)样式操作
- 2024-10-23 前端基础进阶(十三)详细图解jQuery扩展jQuery插件
- 2024-10-23 jQuery对象和DOM对象互相转换(jquery对象怎么转换dom对象)
- 2024-10-23 Help!AJAX到底怎么传多文件数组?知道的赶紧进来
- 02-21走进git时代, 你该怎么玩?_gits
- 02-21GitHub是什么?它可不仅仅是云中的Git版本控制器
- 02-21Git常用操作总结_git基本用法
- 02-21为什么互联网巨头使用Git而放弃SVN?(含核心命令与原理)
- 02-21Git 高级用法,喜欢就拿去用_git基本用法
- 02-21Git常用命令和Git团队使用规范指南
- 02-21总结几个常用的Git命令的使用方法
- 02-21Git工作原理和常用指令_git原理详解
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)