如何在 Linux 上通过命令行解析 JSON 字符串
如果您经常从命令行或 shell 脚本中处理 JSON 格式的文本,您可能想知道是否有任何命令行实用程序可以解析 JSON 字符串。当您测试或调试 JSON Web 服务时,命令行 JSON 解析器会很方便。您可以将来自 Web 服务的 JSON 格式的响应输入命令行 JSON 解析器,从而轻松检查其他难以读取的 JSON 响应或从中提取单个对象。
在本教程中,我将描述如何从命令行解析 JSON 字符串。
在 Linux 上,有一个名为 jq
的命令行 JSON 处理器,它正是执行此操作的。使用jq
,您可以轻松解析、过滤、映射和转换 JSON 结构数据。
在 Linux 上安装 jq
在 Ubuntu、Debian 或 Linux Mint 上安装 jq
$ sudo apt-get install jq
在 CentOS 或 RHEL 上安装 jq
首先,启用 EPEL 存储库并运行:
$ sudo yum install jq
在任何其他 Linux 上安装 jq
您只需下载其二进制文件(分别适用于 32 位和 64 位系统),如下所示。
在 64 位系统上:
$ wget https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64
$ chmod +x ./jq-linux64
$ sudo cp jq-linux64 /usr/bin/jq
在 32 位系统上,将上面的 wget
命令替换为以下命令。
$ wget https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux32
jq
二进制文件也可用于 Windows 和 OS X 平台,其完整源代码在 MIT 许可证下发布。
使用 jq
解析 JSON 字符串
以下示例说明如何使用jq
解析JSON结构数据。
JSON 架构示例:
$ cat json.txt
{
"name": "Google",
"location":
{
"street": "1600 Amphitheatre Parkway",
"city": "Mountain View",
"state": "California",
"country": "US"
},
"employees":
[
{
"name": "Michael",
"division": "Engineering"
},
{
"name": "Laura",
"division": "HR"
},
{
"name": "Elise",
"division": "Marketing"
}
]
}
解析 JSON 对象:
$ cat json.txt | jq '.name'
"Google"
解析嵌套的 JSON 对象:
$ cat json.txt | jq '.location.city'
"Mountain View"
解析 JSON 数组:
$ cat json.txt | jq '.employees[0].name'
"Michael"
要从 JSON 对象中提取特定字段:
$ cat json.txt | jq '.location | {street, city}'
{
"city": "Mountain View",
"street": "1600 Amphitheatre Parkway"
}
如果你想在你的程序中解析 JSON 字符串(例如,用 Python 或 Perl 编写的),你可以参考这些 Python 和 Perl 教程。如果您感兴趣的是检查给定的 JSON 字符串是否符合 JSON 模式,本教程可能会有用。