Linux下处理json数据

本文介绍如何在Linux环境下利用jq这一强大工具处理JSON数据。包括安装方法、基础使用技巧及示例,如解析JSON对象、提取字段等,并介绍了内建函数keys和has的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux下处理json数据

当我们在LInux下需要处理json数据时,第一反应是用脚本编写一个工具,这样即耗时又不通用. 本文将介绍专门的命令行json处理工具jq.

安装

Ubuntu用户可以直接使用下列命令安装:

$ sudo apt-get install jq 

也可以选择源码安装,当然最简单的方法是直接下载可执行文件,不过需要找到适配你系统的版本.

详细的安装方法可以参考这里.

使用

首先构建一个基本的字符串作为示例 test.json:

{
    "name": "中国",
    "province": [{
        "name": "黑龙江",
        "cities": {
            "city": ["哈尔滨", "大庆"]
        }
    }, {
        "name": "广东",
        "cities": {
            "city": ["广州", "深圳", "珠海"]
        }
    }, {
        "name": "台湾",
        "cities": {
            "city": ["台北", "高雄"]
        }
    }, {
        "name": "新疆",
        "cities": {
            "city": ["乌鲁木齐"]
        }
    }]
}

解析json对象

$ cat test.json | jq '.name'
"中国"

$ cat test.json | jq '.province[0].name'
"黑龙江"

$ cat test.json | jq '.province[].name'
"黑龙江"
"广东"
"台湾"
"新疆"

提取字段

$ cat test.json | jq '.province[0]'
{
  "cities": {
    "city": [
      "哈尔滨",
      "大庆"
    ]
  },
  "name": "黑龙江"
}

$ cat test.json | jq '.province[]'
{
  "cities": {
    "city": [
      "哈尔滨",
      "大庆"
    ]
  },
  "name": "黑龙江"
}
{
  "cities": {
    "city": [
      "广州",
      "深圳",
      "珠海"
    ]
  },
  "name": "广东"
}
{
  "cities": {
    "city": [
      "台北",
      "高雄"
    ]
  },
  "name": "台湾"
}
{
  "cities": {
    "city": [
      "乌鲁木齐"
    ]
  },
  "name": "新疆"
}


$ cat test.json | jq '.province[0] | {name ,cities}'
{
  "cities": {
    "city": [
      "哈尔滨",
      "大庆"
    ]
  },
  "name": "黑龙江"
}

$ cat test.json | jq '.province[0] | {name}'
{
  "name": "黑龙江"
}

内建函数

keys用来提取json中的key元素:

$ cat test.json | jq 'keys'
[
  "name",
  "province"
]

$ cat test.json | jq '.|keys'
[
  "name",
  "province"
]

$ cat test.json | jq '.province[0]|keys'
[
  "cities",
  "name"
]

$ cat test.json | jq '.province[]|keys'
[
  "cities",
  "name"
]
[
  "cities",
  "name"
]
[
  "cities",
  "name"
]
[
  "cities",
  "name"
]

has用来判断是否存在某个key:

$ cat test.json | jq 'has("name")'
true
$ cat test.json | jq '.province[0] | has("name")'
true
$ cat test.json | jq 'has("noname")'
false

验证json

若json串格式错误的话,可以直接使用jq运行,会报出具体错误.

总结

有了这个工具.你就可以直接在命令行或者shell脚本对json数据进行操作了.

About me

forthebadge
- GitHub:AnSwErYWJ
- Blog:http://www.answerywj.com
- Email:yuanweijie1993@gmail.com
- Weibo:@AnSwEr不是答案
- 优快云:AnSwEr不是答案的专栏

Creative Commons License This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值