骑驴找蚂蚁

全干工程师

终端(Terminal)中美化JSON的几种方法

在使用terminal期间经常会遇到json数据的展示输出。以下是提供几种方法在终端中打印出漂亮的json数据。

Python方式

[~] echo '{"foo": "lorem", "bar": "ipsum"}' | python -m json.tool
{
    "bar": "ipsum",
    "foo": "lorem"
}

curl远程数据.

[~] curl https://dummyjson.com/products/1 | python -m json.tool
{
    "brand": "Apple",
    "category": "smartphones",
    "description": "An apple mobile which is nothing like apple",
    "discountPercentage": 12.96,
    "id": 1,
    "images": [
        "https://i.dummyjson.com/data/products/1/1.jpg",
        "https://i.dummyjson.com/data/products/1/2.jpg",
        "https://i.dummyjson.com/data/products/1/3.jpg",
        "https://i.dummyjson.com/data/products/1/4.jpg",
        "https://i.dummyjson.com/data/products/1/thumbnail.jpg"
    ],
    "price": 549,
    "rating": 4.69,
    "stock": 94,
    "thumbnail": "https://i.dummyjson.com/data/products/1/thumbnail.jpg",
    "title": "iPhone 9"
}

还可以为python -m json.tool创建一个别名来方便操作.

[~] alias fjson='python -m json.tool'
[~] echo '{"foo": "lorem", "bar": "ipsum"}' | fjson

JQ库方式

jq是一个开源命令行JSON处理器,你可以从这里找到它,查看它的文档阅读使用方法。

要使用jq,需要先安装它。您可以使用apt命令将其安装在Ubuntu上:

[~] sudo apt install jq

Mac中你可以使用brew来安装它:

[~] brew install jq

美化

[~] curl https://dummyjson.com/products/1 | jq                                                                    
{
  "id": 1,
  "title": "iPhone 9",
  "description": "An apple mobile which is nothing like apple",
  "price": 549,
  "discountPercentage": 12.96,
  "rating": 4.69,
  "stock": 94,
  "brand": "Apple",
  "category": "smartphones",
  "thumbnail": "https://i.dummyjson.com/data/products/1/thumbnail.jpg",
  "images": [
    "https://i.dummyjson.com/data/products/1/1.jpg",
    "https://i.dummyjson.com/data/products/1/2.jpg",
    "https://i.dummyjson.com/data/products/1/3.jpg",
    "https://i.dummyjson.com/data/products/1/4.jpg",
    "https://i.dummyjson.com/data/products/1/thumbnail.jpg"
  ]
}

最小化文件

jq不紧可以美化json,还可以压缩json文件。要压缩JSON文件,可以使用压缩选项-c。

[~] jq -c < pretty.json

Node和PHP

如果你的机器上面安装了node, 你还可以使用JSON.stringify来美化。

// 以4个空格格式化
JSON.stringify({"foo":"lorem","bar":"ipsum"}, null, 4);
// 以制表符格式化
JSON.stringify({"foo":"lorem","bar":"ipsum"}, null, '\t');
[~] node -e "console.log(JSON.stringify(JSON.parse(process.argv[1]), null, '\t'));" \ '{"foo":"lorem","bar":"ipsum"}'
{
	"foo": "lorem",
	"bar": "ipsum"
}

还可以使用php来美化。

[~] php -r 'echo json_encode(json_decode($argv[1]), JSON_PRETTY_PRINT);' \ '{"aaa":"cc"}'
{
    "aaa": "cc"
}

如果你还有更多的美化方式,你可以发邮件告诉我。我的邮箱是mfkgdyve456#126.com,发送时请将#换成@

留言