如何在jq查询中过滤含end键的属性并生成指定映射结果
问题描述
之前使用jq从JSON中提取EMAIL与JOB_TITLE生成指定格式的键值对,但发现部分属性包含过期的end键,导致数据异常。需要过滤掉所有包含end键的属性,最终生成如下格式结果:
"john.doe@contoso.com": "SALESMAN", "lorraine.doe@contoso.com": "SECRETARY"
旧查询语句:
.[].attributes | from_entries | select(has("JOB_TITLE") and has("EMAIL")) | "\"\(.EMAIL)\": \"\(.JOB_TITLE)\""
修改后的jq查询方案
.[].attributes | map(select(has("end") | not)) | from_entries | select(has("JOB_TITLE") and has("EMAIL")) | "\"\(.EMAIL)\": \"\(.JOB_TITLE)\""
关键修改说明
- 在将
attributes数组转换为对象前,新增map(select(has("end") | not))步骤,遍历并剔除数组中包含end键的属性条目,避免过期数据混入后续处理。 - 剩余逻辑保持原有筛选与格式输出逻辑,确保最终生成符合要求的键值对字符串。
内容的提问来源于stack exchange,提问作者Robson
相关产品推荐
相关产品推荐

