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不是答案
- CSDN:AnSwEr不是答案的专栏

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

GitHub 加速计划 / li / linux-dash
12
2
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 5 年前
5def40a3 Add host customization support for the NodeJS version 5 年前
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐