如何在 Shell 脚本中设置 JSON 格式以获得更好的可读性

Jq

使 JSON 在 Unix Shell 脚本中可读

处理原始形式的 JSON 数据可能具有挑战性,尤其是在可读性方面。在基于 Unix 的系统中,拥有可以漂亮打印 JSON 的 shell 脚本可以更轻松地分析和调试。

在本指南中,我们将探讨如何使用简单的 Unix shell 命令将紧凑的 JSON 对象转换为更易于阅读的格式。此方法可确保 JSON 数据以有组织且结构化的方式显示。

命令 描述
command -v 检查系统上是否有可用的命令。
jq '.' 使用 jq 命令行工具漂亮地打印 JSON 数据。
python3 -c 'import sys, json; print(json.dumps(json.load(sys.stdin), indent=4))' 使用 Python 从 stdin 读取 JSON 并以 4 个空格的缩进进行漂亮打印。
use JSON; 在 Perl 中加载 JSON 模块以处理 JSON 数据。
decode_json 将 JSON 字符串解码为 Perl 数据结构。
to_json 将 Perl 数据结构编码为 JSON 字符串,并启用漂亮打印。
local $/ 暂时取消定义输入记录分隔符以在 Perl 中一次读取整个文件。

了解 Shell 脚本中的 JSON 漂亮打印

The first script leverages the power of the jq command-line tool to pretty-print JSON data. The #!/bin/bash shebang indicates that the script should be run in the Bash shell. It starts by checking if jq is installed using command -v jq >第一个脚本利用 jq 命令行工具的强大功能来漂亮地打印 JSON 数据。 #!/bin/bash shebang 指示该脚本应在 Bash shell 中运行。首先使用 命令 -v jq > /dev/null 检查是否安装了 jq。如果未找到 jq,脚本将退出并显示错误消息。当 jq 可用时,脚本从 stdin 读取 JSON 输入并使用 jq '.' 进行处理,从而以格式化且可读的方式输出 JSON。此方法对于可随时使用 jq 的基于 Unix 的系统非常有效。

第二个脚本使用 Python 来完成相同的任务。 #!/bin/bash shebang 表示使用 Bash shell,而 python3 -c 'import sys, json; print(json.dumps(json.load(sys.stdin), indent=4))' 是一个单行代码,用于导入必要的模块并漂亮地打印 JSON 数据。该脚本使用 sys.stdin 从 stdin 读取 JSON,使用 json.load 解析它,然后使用 json.dumps 和 4 个空格的 缩进 来生成人类- 可读格式。如果未安装 jq 但 Python 可用,则此方法特别有用。

探索 Perl 的 JSON 格式

第三个脚本利用 Perl 来格式化 JSON 数据。 #!/usr/bin/perl shebang 指定脚本应在 Perl 解释器中运行。首先使用 use JSON; 加载 JSON 模块,该模块提供了处理 JSON 数据所需的函数。该脚本使用 local $/ 和 一次读取整个 JSON 输入

这些脚本中的每一个都提供了一个强大的解决方案,用于将紧凑的 JSON 数据转换为可读格式。通过使用 jq、Python 或 Perl,用户可以选择最适合其环境和偏好的工具。这些脚本不仅增强了可读性,还使调试和理解 JSON 数据结构变得更加容易。

使用 Shell 脚本格式化 JSON

在 Unix Shell 中使用 jq 进行 JSON 漂亮打印

#!/bin/bash
# This script uses jq to pretty-print JSON data

# Check if jq is installed
if ! command -v jq > /dev/null; then
  echo "jq is not installed. Please install jq to use this script."
  exit 1
fi

# Read JSON input from stdin and pretty-print it
jq '.'

在 Unix Shell 中美化 JSON 数据

使用 Python 进行 JSON 格式化的 Shell 脚本

#!/bin/bash
# This script uses Python to pretty-print JSON data

# Read JSON input from stdin and pretty-print it using Python
python3 -c 'import sys, json; print(json.dumps(json.load(sys.stdin), indent=4))'

JSON 格式化变得简单

用于在 Unix Shell 中格式化 JSON 的 Perl 脚本

#!/usr/bin/perl
# This script uses Perl to pretty-print JSON data
use JSON;
use strict;
use warnings;

my $json_text = do { local $/; <STDIN> };
my $json = decode_json($json_text);
print to_json($json, { pretty => 1 });

Unix Shell 中 JSON 格式化的高级技术

除了使用 jq、Python 和 Perl 等基本工具之外,还有更高级的方法可以在 Unix shell 脚本中处理和漂亮打印 JSON。其中一种方法涉及使用 Node.js 及其内置 JSON 功能。 Node.js 为处理 JSON 提供了强大且灵活的环境,尤其是在处理更复杂的数据结构时。可以创建一个简单的 Node.js 脚本来读取 stdin 并输出格式化的 JSON。当使用 JavaScript 较多的环境或需要对 JSON 数据进行额外处理时,此方法特别有用。

另一种高级技术涉及使用 sed 和 awk 进行 JSON 格式化。虽然这些工具传统上用于文本处理,但它们可以以创造性的方式组合起来格式化 JSON。例如,awk 可用于根据 JSON 数据的结构添加换行符和缩进,而 sed 可用于进一步细化输出。尽管此方法可能比使用专用 JSON 工具更复杂且不太直观,但它在仅提供基本 Unix 实用程序的环境中非常有用。

  1. 什么是 jq 以及如何使用它?
  2. jq 是一个轻量级且灵活的命令行 JSON 处理器。它用于解析、过滤和格式化 JSON 数据。
  3. Python 可以用于 JSON 漂亮打印吗?
  4. 是的,Python 可以从 stdin 读取 JSON,并使用 json 模块和一个简单的单行脚本来漂亮地打印它。
  5. Perl 中的 decode_json 函数如何工作?
  6. decode_json 用于将 JSON 字符串转换为 Perl 数据结构,以便于操作和格式化。
  7. 为什么使用 Node.js 进行 JSON 格式化?
  8. Node.js 提供强大的 JSON 处理功能,可以轻松集成到 JavaScript 密集型环境中。
  9. 使用 sed 和 awk 进行 JSON 格式化有哪些好处?
  10. sed 和 awk 可用于 Unix 环境中的文本处理任务,在专用 JSON 工具不可用时提供灵活性。
  11. 有没有一种方法可以仅使用 Unix 实用程序来格式化 JSON?
  12. 是的,通过创造性地使用sed和awk,可以在不依赖外部工具的情况下格式化JSON数据。
  13. 如何在我的 Unix 系统上安装 jq?
  14. 您可以使用包管理器安装 jq,例如,在基于 Debian 的系统上使用 apt-get install jq 或在 macOS 上使用 brew install jq。
  15. awk 可以处理复杂的 JSON 结构吗?
  16. awk 可以处理简单的 JSON 结构,但可能难以处理更复杂的数据。将 awk 与其他工具结合可以提高其功能。

在 Unix shell 脚本中漂亮打印 JSON 增强了数据的可读性和可管理性,使其更易于调试和理解。利用 jq、Python 和 Perl 等工具,甚至Node.js 等先进技术,可确保 JSON 数据以结构化且有组织的方式呈现。选择正确的工具取决于您的具体环境和需求,但每种方法都提供了有效格式化 JSON 的强大解决方案。