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

JQ语法求助:从JSON提取主键类型及过滤成员数据

解决JQ处理JSON的两个需求:主键类型转小写及生成过滤后的Body

示例输入JSON

假设你的输入JSON结构如下:

{
  "members": [
    {
      "name": "id",
      "type": "INT",
      "isPrimaryKey": true
    },
    {
      "name": "username",
      "type": "STRING",
      "isPrimaryKey": false
    },
    {
      "name": "email",
      "type": "STRING",
      "isPrimaryKey": false
    }
  ]
}

需求说明

  1. 改进JQ语句,让输出的parameters中主键字段对应的type转为小写;
  2. 同时生成包含主键类型(已转小写)的parameters,以及过滤掉所有主键字段的body部分。

正确JQ语句

{
  parameters: .members | map(
    if .isPrimaryKey then
      {name: .name, type: .type | ascii_downcase}
    else
      {name: .name, type: .type}
    end
  ),
  body: .members | map(select(.isPrimaryKey == false)) | map({name: .name})
}

输出结果

执行上述语句后,会得到符合预期的输出:

{
  "parameters": [
    {
      "name": "id",
      "type": "int"
    },
    {
      "name": "username",
      "type": "STRING"
    },
    {
      "name": "email",
      "type": "STRING"
    }
  ],
  "body": [
    {
      "name": "username"
    },
    {
      "name": "email"
    }
  ]
}

逻辑解释

  • 主键类型转小写:通过if .isPrimaryKey then ... else ... end判断当前字段是否为主键,若是则用ascii_downcase将type值转为小写;
  • 过滤主键生成Body:使用select(.isPrimaryKey == false)筛选出非主键字段,再提取name字段组成body数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 19:22:39