返回

用 jq 从 JSON 中提取字段、类型和默认值:命令和技巧

Linux

使用 jq 从 JSON 中提取字段、类型和默认值

探索 JSON 数据

JSON 是一种广泛用于数据传输和存储的流行格式。从命令行处理 JSON 数据时,我们经常需要提取和操作字段、类型和默认值。本指南将介绍如何使用 jq 命令高效地完成这些任务。

安装 jq

在继续之前,确保系统已安装 jq:

sudo apt install jq

理解 jq 命令

jq 是一款功能强大的命令行 JSON 处理器,它使用一种简洁且易于学习的语言进行查询。下面是一个基本的 jq 语法示例:

jq 'expression' input.json

提取字段名称

要仅获取 JSON 字段的名称,可以使用以下命令:

jq -r '.fields[].name' input.json

这将以原始格式打印字段名称,用引号括起来。

提取字段类型

要提取字段的类型,请使用以下命令:

jq -r '.fields[].type | tostring' input.json

这将以字符串形式打印字段类型,删除任何引号。

提取字段默认值

对于可为 null 的字段,我们可以使用以下命令提取其默认值:

jq -r '.fields[] | "\"\(.name)\" : \(.type | tostring | sub("^(null)
jq -r '.fields[] | "\"\(.name)\" : \(.type | tostring | sub("^(null)$"; "\\1 :     null") | sub("(^\"|\"$)"; ""))"' input.json
quot;
; "\\1 : null") | sub("(^\"|\"$)"; ""))
"
' input.json

这会生成类似这样的输出:

"shopId" : string
"productId" : string
"sourceId" : string
"timestampTransmission" : long
"productQuantity" : double : null

其中,字段名称用引号括起来,类型用字符串表示,null 类型替换为 null : null,并且引号已从类型字符串中删除。

其他 jq 技巧

jq 提供了许多其他有用的功能,例如:

  • 过滤器:根据特定条件筛选 JSON 数据。
  • 修改器:操作和转换 JSON 数据。
  • 函数:执行特定操作,例如字符串连接和比较。

结论

jq 是一个强大的工具,可以轻松从命令行提取和操作 JSON 数据。使用本文中提供的命令和技巧,你可以高效地探索 JSON 文件,并提取字段名称、类型和默认值。

常见问题解答

问:如何安装 jq?
答:使用 sudo apt install jq 命令安装。

问:如何仅提取字段名称?
答:使用 jq -r '.fields[].name' 命令。

问:如何仅提取字段类型?
答:使用 jq -r '.fields[].type | tostring' 命令。

问:如何提取可为 null 的字段的默认值?
答:使用 jq -r '.fields[] | "\"\(.name)\" : \(.type | tostring | sub("^(null)$"; "\\1 : null") | sub("(^\"|\"$)"; ""))' 命令。

问:如何使用 jq 过滤 JSON 数据?
答:使用过滤器表达式,例如 jq -r '.fields[] | select(.type == "string")'