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

如何编写JQ表达式移除body中与primarykey同名的字段

JQ表达式优化:移除Body中与主键同名的字段

原始JSON数据

{
  "body": {
    "name": "DATATYPES",
    "primarykey": [
      "db_number"
    ],
    "members": [
      {
        "name": "db_number",
        "type": "NUMBER"
      },
      {
        "name": "db_date",
        "type": "DATE"
      },
      {
        "name": "db_timestamp",
        "type": "TIMESTAMP(6)"
      },
      {
        "name": "db_timestamp_with_local_time_zone",
        "type": "TIMESTAMP(6) WITH LOCAL TIME ZONE"
      },
      {
        "name": "db_char",
        "type": "CHAR"
      },
      {
        "name": "db_float",
        "type": "FLOAT"
      },
      {
        "name": "db_nchar",
        "type": "NCHAR"
      },
      {
        "name": "db_nvarchar2",
        "type": "NVARCHAR2"
      },
      {
        "name": "db_varchar2",
        "type": "VARCHAR2"
      },
      {
        "name": "db_binary_float",
        "type": "BINARY_FLOAT"
      },
      {
        "name": "db_binary_double",
        "type": "BINARY_DOUBLE"
      },
      {
        "name": "db_timestamp_with_time_zone",
        "type": "TIMESTAMP(6) WITH TIME ZONE"
      },
      {
        "name": "db_interval_year_to_month",
        "type": "INTERVAL YEAR(2) TO MONTH"
      },
      {
        "name": "db_interval_day_to_second",
        "type": "INTERVAL DAY(2) TO SECOND(6)"
      },
      {
        "name": "db_long",
        "type": "LONG"
      },
      {
        "name": "db_blob",
        "type": "BLOB"
      },
      {
        "name": "db_clob",
        "type": "CLOB"
      },
      {
        "name": "db_boolean",
        "type": "CHAR"
      }
    ],
    "links": [
      {
        "rel": "collection",
        "href": "https://tdcvm28s16.bcone.com:7002/ords/testords/metadata-catalog/",
        "mediaType": "application/json"
      },
      {
        "rel": "canonical",
        "href": "https://tdcvm28s16.bcone.com:7002/ords/testords/metadata-catalog/datatypes/",
        "mediaType": "application/json"
      },
      {
        "rel": "alternate",
        "href": "https://tdcvm28s16.bcone.com:7002/ords/testords/open-api-catalog/datatypes/",
        "mediaType": "application/openapi+json"
      },
      {
        "rel": "describes",
        "href": "https://tdcvm28s16.bcone.com:7002/ords/testords/datatypes/"
      }
    ]
  }
}

当前使用的JQ表达式

{parameters: (.body.primarykey[] | {(.): ""}), body: (.body.members | map({(.name): .type |ascii_downcase}) | add)}

当前输出结果

{
  "parameters": {
    "db_number": ""
  },
  "body": {
    "db_number": "number",
    "db_date": "date",
    "db_timestamp": "timestamp(6)",
    "db_timestamp_with_local_time_zone": "timestamp(6) with local time zone",
    "db_char": "char",
    "db_float": "float",
    "db_nchar": "nchar",
    "db_nvarchar2": "nvarchar2",
    "db_varchar2": "varchar2",
    "db_binary_float": "binary_float",
    "db_binary_double": "binary_double",
    "db_timestamp_with_time_zone": "timestamp(6) with time zone",
    "db_interval_year_to_month": "interval year(2) to month",
    "db_interval_day_to_second": "interval day(2) to second(6)",
    "db_long": "long",
    "db_blob": "blob",
    "db_clob": "clob",
    "db_boolean": "char"
  }
}

需求说明

移除输出中body对象内与primarykey同名的字段(即db_number),得到不含该字段的body对象。

正确的JQ表达式

{
  parameters: (.body.primarykey[] | {(.): ""}),
  body: (.body.members | map({(.name): .type | ascii_downcase}) | add)
} | del(.body[.parameters | keys[]])

表达式说明

  1. 先按原有逻辑生成包含parameters和body的基础结果
  2. 通过del(.body[.parameters | keys[]])删除body中所有与parameters内键名一致的字段,适配单个或多个主键的场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 07:14:53