You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用jq从指定JSON结构中提取目标数据?

用jq实现JSON字段提取与重组

需求:从给定JSON中提取指定字段并重新组织结构,具体如下:

输入JSON示例

{
  "pipeline1": {
    "description": "Desc 1",
    "last_modified": "2023-11-14T09:27:50.235Z",
    "pipeline_metadata": {
      "version": 1,
      "type": "logstash_pipeline"
    },
    "username": "user1",
    "pipeline": "code",
    "pipeline_settings": {
      "pipeline.batch.delay": 50,
      "pipeline.batch.size": 125,
      "pipeline.workers": 1,
      "queue.checkpoint.writes": 1024,
      "queue.max_bytes": "1gb",
      "queue.type": "memory"
    }
  }
}

期望输出

{
  "pipeline": "pipeline1",
  "description": "Desc 1",
  "last_modified": "2023-11-14T09:27:50.235Z",
  "username": "user1",
  "pipeline": "code"
}

实现方法

完全可以用jq实现,执行以下命令即可:

jq 'to_entries[] | {pipeline: .key, description: .value.description, last_modified: .value.last_modified, username: .value.username, pipeline: .value.pipeline}' input.json

命令逻辑说明

  1. to_entries[]:把顶层的键值对转换为包含key和value的条目,遍历每个条目;
  2. {pipeline: .key, ...}:构造新JSON对象,将原顶层键(如pipeline1)赋值给新的pipeline字段,同时提取原对象内指定的几个字段合并进去。

如果需要直接修改原文件(需jq支持--in-place参数),可使用:

jq --in-place 'to_entries[] | {pipeline: .key, description: .value.description, last_modified: .value.last_modified, username: .value.username, pipeline: .value.pipeline}' input.json

内容的提问来源于stack exchange,提问作者user2771833

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 16:10:15