如何在命令行里格式化JSON

身为一名软件工程师,我们经常需要在命令行里面优雅的显示 JSON,那么如何做呢?

有两种比较简单的方式可以从命令行漂亮的打印 JSON 字符串,第一种使用python,另外一种就是使用 jq 命令。

Screen Shot 2019-12-01 at 14.18.36.png

使用 python

用法:

input | python -mjson.tool

input 作为json输入流,经过管道,最后使用 python -mjson.tool 处理

Example 1:

echo '{"perso":{"name": "dev4mobile"}}' | python -mjson.tool

Output:

{
    "perso": {
        "name": "dev4mobile"
    }
}

Example 2:

curl http://127.0.0.1:8080 | python -mjson.tool

Output:

{
    "timestamp": "2019-12-01T06:01:46.993+0000",
    "status": 404,
    "error": "Not Found",
    "message": "No message available",
    "path": "/"
}

上边是常用的两个例子

使用 jq 命令

安装 jq

  1. mac os 平台
brew install jq
  1. Ubuntu 平台
sudo apt-get install jq

用法:

input | jq .

jq 后面的 . 是代表整个input 对象,所以jq .就是格式化整个 JSON

Example 1

echo '{"perso":{"name": "dev4mobile"}}' | jq .

Output:

{
  "perso": {
    "name": "dev4mobile"
  }
}

Example 2

curl http://127.0.0.1:8080 | jq .

Output:

{
  "timestamp": "2019-12-01T06:12:19.838+0000",
  "status": 404,
  "error": "Not Found",
  "message": "No message available",
  "path": "/"
}