linux操作json⽂件
Linux 下操作 json ⽂件神器 jq
jq
yum install jq -y
查看⼀个file.json格式⽂件
# jq . file.json
JSON
(JavaScript Object Notation, JS 对象简谱) 是⼀种轻量级的数据交换格式。
简洁和清晰的层次结构使得 JSON 成为理想的数据交换语⾔。易于⼈阅读和编写,同时也易于机器解析和⽣成,并有效地提升⽹络传输效率。
JSON 语法格式:
JSON的结构基于这两点: "键/值对" ,
在不同的语⾔中,它可以被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash table),键列表(keyed list)等 .
值的有序列表多数语⾔中被理解为数组(array)
json 基础结构说明
JSON的基础结构说明:
对象是属性、值的集合。⼀个对象开始与”{” ,结束于”}”。每⼀个属性名和值间⽤”:”分隔。每个属性间⽤”,”分隔。
值可以是字符串,数字,逻辑值,数组,对象,null。
数字:整数或浮点数
字符串:在双引号中
逻辑符:true和false
数组:在⽅括号中
对象:在花括号中
null:代表空
JSON 键/值对
JSON 键值对是⽤来保存 JS 对象的⼀种⽅式,和 JS 对象的写法也⼤同⼩异,键/值对组合中的键名写在前⾯并⽤双引号""包裹,使⽤冒号 : 分隔,然后紧接着值:{"firstName": "Json"}
这很容易理解,等价于这条 JavaScript 语句:
js逗号分割的字符串转数组
{firstName : "Json"}
JSON 与 JS 对象的关系
很多⼈搞不清楚 JSON 和 Js 对象的关系,甚⾄连谁是谁都不清楚。其实,可以这么理解:
JSON 是 JS 对象的字符串表⽰法,它使⽤⽂本表⽰⼀个 JS 对象的信息,本质是⼀个字符串。
如:
var obj = {a: 'Hello', b: 'World'}; //这是⼀个对象,注意键名也是可以使⽤引号包裹的
var json = '{"a": "Hello", "b": "World"}'; //这是⼀个 JSON 字符串,本质是⼀个字符串
JSON 和 JS 对象互转
要实现从对象转换为 JSON 字符串,使⽤ JSON.stringify() ⽅法:
var json = JSON.stringify({a: 'Hello', b: 'World'}); //结果是 '{"a": "Hello", "b": "World"}'
要实现从 JSON 转换为对象,使⽤ JSON.parse() ⽅法:
var obj = JSON.parse('{"a": "Hello", "b": "World"}'); //结果是 {a: 'Hello', b: 'World'}
jq 命令允许直接在命令⾏下对JSON进⾏操作,包括分⽚、过滤、转换。
jq 命令的格式:
jq [options] filter [files]
**options:**
--version:输出jq的版本信息并退出
-
-slurp/-s:读⼊整个输⼊流到⼀个数组。
--raw-input/-R:不作为JSON解析,将每⼀⾏的⽂本作为字符串输出到屏幕。
--null-input/ -n:不读取任何输⼊,过滤器运⾏使⽤null作为输⼊。⼀般⽤作从头构建JSON数据。
--compact-output /-c:使输出紧凑,⽽不是把每⼀个JSON对象输出在⼀⾏。
--colour-output / -C:打开颜⾊显⽰
--monochrome-output / -M:关闭颜⾊显⽰
--ascii-output /-a:指定输出格式为ASCII
-raw-output /-r :如果过滤的结果是⼀个字符串,那么直接写到标准输出(去掉字符串的引号)
**filter:**
. : 默认输出
.foo: 输出指定属性,foo代表属性。
.
[foo] :输出指定数组元素。foo代表数组下标。
.[]:输出指定数组中全部元素
,:指定多个属性作为过滤条件时,⽤逗号分隔
| :将指定的数组元素中的某个属性作为过滤条件**files:**
JOSN格式⽂件。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。