优雅的查看json文件(代码片段)

huanping huanping     2022-12-05     674

关键词:

前面

jq是一个轻量级但是贼灵活的命令行json处理器.jq在json数据处理中很有用就像用awk处理文本一样。jq最简单的应用应该是解析json文件格式化输出数据吧。有些网站如:json.cn 就是用来在线解析json以一个友好的格式返回给用户查看。解析网站对于简单的json数据使用较为良好,不过对于比较的大的文件就不行了。毕竟你打要开json文件,然后复制到网站上,如果文件太大,还可能卡顿一下。不过jq很强大,你可以设置各种命令,返回你想要的结果。本文简单讲解下jq比较常用的操作。

安装

jq支持Linux,OS X,Windows等系统。Debian和Ubuntu安装用sudo apt-get install jq就行了。其它的系统安装可以去查看:https://stedolan.github.io/jq/download/

基本使用

jq ‘.‘

这里我用的系统是Ubuntu 16。现在这有一个json文件,但是里面的格式不规范。我们需要查看里面的内容:
技术图片
使用jq之后就不一样了,‘.‘表示当前输入的内容:
技术图片

jq ‘.foo[:1]‘ / 索引切片

可以看出jq支持管道,也可以直接用文件,命令:jq ‘.‘ type73.json , 可以通过‘.key‘来获取这个key的内容,如果key 的值是数组,可以用索引值来指定某个值,也支持切片操作。如:
技术图片

jq ‘.foo, .bar | .[1]‘ /多个过滤,管道操作

使用 ‘,‘可以同时利用多个表达式过滤,支持管道操作,jq ‘.A | .B‘:以前一个的输出作为后一个的输入。如:
技术图片

jq ‘[.foo[1], .bar[1]]‘ 构建新数组

技术图片

利用 []可以将不同key下的值构建一个新的输出

jq ‘new_f: .foo, new_b: .bar‘ 构建新对象

技术图片

jq ‘[.foo[1], .bar[1]]‘ > filter.json将过滤后的数据保存

利用 > 将数据转到新的文件里:
技术图片

内置的操作和函数

jq内置有一些运算操作符支持加减乘除等,和一些内置函数,使之更灵活和强大。

加减乘除

注意加减乘除的需要类型一样,同样是数组,或者标量,或者对象:
技术图片

map / map_values

可以用map对每个数组的元素进行操作,map_values用于对象的values操作:
技术图片

删除某个元素

可以通过key,删除,也可以指定索引值删除: jq ‘.one.sn | del(.[1])‘ type73.json, 程序运行后是返回的删除后的内容
技术图片

挑选指定条件内容

select(boolean_expression) 通过布尔表达式挑选指定内容
技术图片

注意事项

jq不能正确解析,key 值为 数字字符串的内容。比如: “1”: 123, “2”: “abc”,jq ‘.2‘ file.json 就不能正确的解析。

最后

jq还有许多内置函数, 还支持if,else条件语句,能作比较,支持一些数学运算,正则表达式等等。总之很实用也强大,这里写不完。更多的可以去官网查看。很详细的!


参考

https://stedolan.github.io/jq/manual/#ConditionalsandComparisons

用c++优雅的实现对象到文件的序列化/反序列化(代码片段)

需求.  在写代码的过程中,经常会需要把代码层面的对象数据保存到文件,而这些数据会以各种格式存储.例如:json,xml,二进制等等.最近恰好就需要把对象以二进制存储到硬盘.这是一个很简单的需求,相比json,xml格式... 查看详情

如何优雅的实现“查看更多”(代码片段)

开始前大家做一些文本简介展示需求时可能会遇到文本过长的场景,这时视觉同学可能会要求设置最大行数并在末尾展示"查看更多"(后面简称MoreText)。废话不多说,先看下要求实现的效果(图为实现后的Dem... 查看详情

linux更加优雅地运行jar文件,并将日志文件输出到本地目录,并优雅的查看日志文件信息(代码片段)

一、运行jar方式一:直接运行jar包,最常用的启动jar包命令,特点:当前ssh窗口被锁定,CTRL+C或关闭窗口,将打断程序运行,程序退出java-jarSpring.jar方式二:&代表在后台运行,CTRL+C后... 查看详情

如何优雅的实现数据脱敏(代码片段)

如何优雅的实现数据脱敏Jackson序列化中脱敏自定义脱敏序列化改造脱敏注解使用参考很多时候我们从ORM查询到的数据有其它逻辑要处理,比如根据电话号查询用户信息,你脱敏了就没有办法来处理该逻辑了。所以脱敏这... 查看详情

在json里查看solidity的版本(代码片段)

  智能合约使用trufflecompile、npxhardhatcompile、browniecompile这3种工具编译后,都会得到一个json文件,该json文件有合约的abi、bytecode、compiler等字段。abi应用程序二进制接口,是合约提供外界调用的接口。bytecoe字节码... 查看详情

优雅的用eruda在移动端上调试网页『未完』(代码片段)

目录:简介简单的实现与小书签搭配实现与via搭配食用与tampermonkey和yandex浏览器搭配食用致谢注:本文有一小部分截图为桌面端,但所有内容都亲测在移动端上可用。1.(eruda)简介github开源项目网址:erudaDemo演示( extEruda)是一个专... 查看详情

如何优雅地运用位运算实现产品需求?(代码片段)

如何优雅地运用位运算实现产品需求?在开始正文之前,我们先来说一下Linux的系统权限设计。在Linux系统中,为了保证文件的安全,对文件所有者、同组用户、其他用户的访问权限进行了分别管理。其中,文件所有者,即建立... 查看详情

vue查看dist文件里的结构(代码片段)

...module.exports=configureWebpack:plugins:[newStatsPlugin(‘stats.json‘,//查看statschunkModules:true,chunks:true,assets:false,modules:true,children:true,chunksSort:true,assetsSort:true)],,;  2.3结果:会在 查看详情

如何优雅地关闭资源(代码片段)

很多时候我们都会用到io资源,比如文件、网络、各种连接等。比如有时候我们需要从一个文本文件中读取数据,一般的步骤是:用FileReader打开文件包装成BufferReader循环地从BufferReader中读取内容,直接读出来的内容为空关闭Buffer... 查看详情

如何优雅的展示动态图标lottie-react-native(代码片段)

如何优雅的展示动态图标lottie-react-native项目中,需要使用到动态图标,发现又好用的库,在这里分享一下,需要使用的工具库为lottie-react-native,通过导出AE软件中的动画特效,以json文件的方式导出,... 查看详情

springboot项目优雅的实现多配置文件切换以及获取配置信息(代码片段)

SpringBoot项目优雅的实现多配置文件切换以及获取配置信息一、构建项目二、创建工具类进行解析yml获取对应的配置数据三、测试在我们平时的生产中肯定不会单纯的的只有一个配置文件,通产会分为测试、开发、生产三个版... 查看详情

vue3企业级优雅实战-组件库框架-11组件库的打包构建和发布(代码片段)

回顾第一篇文章中谈到的组件库的几个方面,只剩下最后的、也是最重要的组件库的打包构建、本地发布、远程发布了。1组件库构建组件库的入口是packages/yyg-demo-ui,构建组件库有两个步骤:添加TypeScript的配置文件&#... 查看详情

如何优雅的给你的apk文件打上签名(代码片段)

原文链接:如何优雅的给你的APK文件打上签名历经千兴万苦开发Android应用后,将这个应用打包成APK文件发布到应用商店就可以让用户下载安装到他们的手机上。当然,不是所有的APK都能安装到手机上,Android系统... 查看详情

go优雅的读取http请求或响应的数据(代码片段)

【Go】优雅的读取http请求或响应的数据原文链接:https://blog.thinkeridea.com/201901/go/you_ya_de_du_qu_http_qing_qiu_huo_xiang_ying_de_shu_ju.html从http.Request.Body或http.Response.Body中读取数据方法或许很多,标准库中大多数使用ioutil.ReadAll方法一次读取... 查看详情

async:简洁优雅的异步之道(代码片段)

前言在异步处理方案中,目前最为简洁优雅的便是async函数(以下简称A函数)。经过必要的分块包装后,A函数能使多个相关的异步操作如同同步操作一样聚合起来,使其相互间的关系更为清晰、过程更为简洁、调试更为方便。... 查看详情

优雅地把html解析为java/kotlin实体对象(代码片段)

使用Java如何优雅地爬取网页内容,并解析为实体对象呢?由于我对Android平台比较熟悉,在项目中我们使用的Retrofit、Okhttp、Kotlin协程、LoganSquare解析把Server返回的Json解析为实体对象。那爬网页的时候是不是也可以使... 查看详情

优雅的处理vue注册全局组件(代码片段)

使用情景:  有频繁使用的组件需要进行全局注册  可以将这些组件都放在components下同一个文件夹下,在此文件夹中建立一个js文件代码如下:  importVuefrom‘vue‘;//修改文件名首字母大写functionchangeComponentName(str)returnstr.ch... 查看详情

如何优雅的将图片文字上传至服务器?(代码片段)

...esourceUtils解决问题二效果如何限制上传文件的大小并返回优雅的提示?附录:多文件上传实现前言可能很多小伙伴们在学习JAVAWEB的时候,都或多或少的接触过IO流等相关方面的知识,从最简单的在JAVA环境下实现文件的... 查看详情