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

jq中pick_extension无匹配时如何返回null而非空结果

解决方案

问题原因

原有代码的核心问题是pick_extension函数中,select操作无匹配结果时会直接截断输出流,不会产生任何返回值,后续管道连接的所有运算都会终止,最终数组构造语句没有输入元素,就返回了空数组。

修改后的jq代码

def pick_extension($url):
  # 筛选结果存入数组后取首个元素,无匹配时兜底返回null,保证函数始终有输出
  [.extension[] | select(.url == $url)] | first // null;

pick_extension("http://hl7.org/fhir/StructureDefinition/patient-nationality") as $ext
| [
    $ext.url,
    $ext.extension[0].url,
    $ext.extension[0].valueCodeableConcept.coding[0].system,
    $ext.extension[0].valueCodeableConcept.coding[0].code
]

效果说明

  1. 当存在匹配的扩展字段时,会按顺序返回扩展url、子扩展url、编码体系、编码值四个字段
  2. 当不存在匹配的扩展字段时,$ext值为null,jq中从null取值会默认返回null,最终输出固定为[null, null, null, null],完全符合预期要求。

如果使用的jq版本不支持first内置函数,可将first // null替换为.[0] // null,效果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:45:03