查看: 33|回复: 0

在Linux命令行中解析JSON的详细步骤

[复制链接]

0

主题

0

回帖

0

积分

积极分子

金币
0
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2012-5-7
发表于 2025-11-24 09:23:47 | 显示全部楼层 |阅读模式

前言

JQ 是一个通用的 Linux 命令行 JSON 处理器,它允许开发人员快速地解析、过滤和转换 JSON 数据。在本文中,我们将介绍常用的 JQ 命令,展示如何简化 JSON 处理任务。

示例 JSON 文件内容

您可以将以下示例数据保存在名为 input.json 的文件中。这个 JSON 数据表示具有各自姓名、年龄、国家和地址的人员数组。

[
  {
    "name": "Alice",
    "age": 35,
    "country": "USA",
    "address": {
      "street": "123 Main St",
      "city": "New York",
      "state": "NY",
      "zip": "10001"
    }
  },
  {
    "name": "Bob",
    "age": 28,
    "country": "Canada",
    "address": {
      "street": "456 Maple Ave",
      "city": "Toronto",
      "province": "ON",
      "postal_code": "M5V 1A1"
    }
  },
  {
    "name": "Charlie",
    "age": 42,
    "country": "USA",
    "address": {
      "street": "789 Oak St",
      "city": "San Francisco",
      "state": "CA",
      "zip": "94102"
    }
  },
  {
    "name": "David",
    "age": 23,
    "country": "Canada",
    "address": {
      "street": "321 Pine St",
      "city": "Vancouver",
      "province": "BC",
      "postal_code": "V6B 2P4"
    }
  }
]

使用示例

1. Pretty Print JSON Data

要美观地打印 JSON 数据,只需将 JSON 文件传递给 JQ 命令,后跟一个句点(“.”):

jq '.' input.json

2. Retrieve a Specific JSON Key

要从 JSON 对象中提取特定键的值,使用以下语法:

jq '.key' input.json

例如,要提取 name 键的值,使用:

jq '.name' input.json

3. Access Nested JSON Values

要访问嵌套的 JSON 值,使用点(“.”)表示法:

jq '.key1.key2.key3' input.json

例如,要提取嵌套在address 下的 city 键的值,使用:

jq '.address.city' input.json

4. Iterate Over JSON Arrays

使用方括号(“[]”)来迭代 JSON 数组:

jq '.[]' input.json

要从数组中的每个对象提取特定的键,使用 pipe(“|”)操作符:

jq '.[] | .key' input.json

5. Filter JSON Data

如果需要根据特定条件过滤 JSON 数据,可以使用 select 函数:

jq '.[] | select(.key == "value")' input.json

例如,要过滤数组中年龄大于 30 的对象,使用:

jq '.[] | select(.age > 30)' input.json

6. Map and Transform JSON Data

要映射和转换 JSON 数据,使用大括号(“{}”):

jq '.[] | {key1: .key1, key2: .key2}' input.json

例如,要创建一个只有 nameage 键的 JSON 对象,使用:

jq '.[] | {name: .name, age: .age}' input.json

7. Combine Multiple JSON Files

要合并两个 JSON 文件,使用 “*” 操作符:

jq -s '.[0] * .[1]' file1.json file2.json

8. Perform Arithmetic Operations

JQ 可以对数值 JSON 值执行算术运算:

jq '.number1 + .number2' input.json

9. Sort JSON Data

要根据特定键对 JSON 数据进行排序,使用 sort_by 函数:

jq '.[] | sort_by(.key)' input.json

| 1 | jq’.[] | sort_by(.key)'input.json |
| — | ------------------------------------------- |

例如,按照 age 键对对象数组进行排序,请使用:

jq '.[] | sort_by(.age)' input.json

10. Group JSON Data

要根据特定键对 JSON 数据进行分组,使用 group_by 函数:

jq 'group_by(.key)' input.json

例如,按照 country 键对对象数组进行分组,请使用:

jq 'group_by(.country)' input.json
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部