我正在使用JQ Play。
这是我的 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"
}
}
在这里,我的要求是 - 我想从输出主体中删除记录/字段:{},它与主键具有相同的名称。
所以我无法形成这样的 JQ,不会在主体内获取与主键匹配的记录。
我的预期输出是-
{
"parameters": {
"db_number": ""
},
"body": {
"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"
}
}
请帮助我找到可以在 jqplay.org 中使用的正确 JQ
稍加改造,可以写成
.body.primarykey[] as $k |
{ parameters: ({($k): "" }),
body: (.body.members | map(select(.name != $k) | {(.name): .type |ascii_downcase}) | add)
}