如何编写JQ表达式在JQ Play中生成指定格式的主键输出?
JQ表达式实现主键格式化输出
原始JSON数据
{ "body":{ "primarykey": [ "book_id", "edition_id" ], "members": [ { "name": "book_id", "type": "NUMBER" }, { "name": "edition_id", "type": "NUMBER" }, { "name": "title", "type": "VARCHAR2" } ], "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/books/", "mediaType": "application/json" }, { "rel": "alternate", "href": "https://tdcvm28s16.bcone.com:7002/ords/testords/open-api-catalog/books/", "mediaType": "application/openapi+json" }, { "rel": "describes", "href": "https://tdcvm28s16.bcone.com:7002/ords/testords/books/" } ] } }
当前使用的JQ表达式
.body.primarykey[] | "{" + . + "}"
当前输出结果
"{book_id}" "{edition_id}"
期望输出
{"book_id"},{"edition_id"}
正确JQ表达式
.body.primarykey | map("{" + . + "}") | join(",")
说明
- 直接定位到
primarykey数组,避免逐个输出元素 - 用
map()遍历数组,将每个主键格式化为{"主键名"}的字符串 - 最后通过
join(",")把所有格式化后的字符串用逗号连接成一行,同时自动去除默认的字符串引号
内容的提问来源于stack exchange,提问作者sujay777
相关产品推荐
相关产品推荐

