网站首页 > 技术文章 正文
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到底怎么传多文件数组?知道的赶紧进来
- 1507℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 505℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 484℃MySQL service启动脚本浅析(r12笔记第59天)
- 465℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 462℃启用MySQL查询缓存(mysql8.0查询缓存)
- 442℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 422℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 418℃MySQL server PID file could not be found!失败
- 最近发表
-
- netty系列之:搭建HTTP上传文件服务器
- 让deepseek教我将deepseek接入word
- 前端大文件分片上传断点续传(前端大文件分片上传断点续传怎么操作)
- POST 为什么会发送两次请求?(post+为什么会发送两次请求?怎么回答)
- Jmeter之HTTP请求与响应(jmeter运行http请求没反应)
- WAF-Bypass之SQL注入绕过思路总结
- 用户疯狂点击上传按钮,如何确保只有一个上传任务在执行?
- 二 计算机网络 前端学习 物理层 链路层 网络层 传输层 应用层 HTTP
- HTTP请求的完全过程(http请求的基本过程)
- dart系列之:浏览器中的舞者,用dart发送HTTP请求
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)