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

如何修改jq过滤表达式,避免无版本字段时报错并返回空值

解决jq处理JSON生成CSV时字段缺失的报错问题

你当前的jq表达式在software.version字段存在时能正常生成CSV,但该字段缺失时会触发报错——原因是直接对可能不存在的字段使用数组迭代[],当字段为null或不存在时,null[]会抛出错误导致脚本终止。

修改后的完整jq表达式

.result[] | [
  "https://vuldb.com/?id." + .entry.id,
  .software.vendor // "empty",
  .software.name // "empty",
  try (.software.version[] | tostring) // "empty",
  .software.type // "empty",
  .software.platform // "empty"
]

关键修改点说明

把原表达式中(.software.version []| tostring // "empty")替换为try (.software.version[] | tostring) // "empty":

  • try关键字会捕获迭代过程中的所有错误(比如字段不存在、目标不是数组等情况),出错时返回null
  • 再通过// "empty"将null替换为你指定的空值标记,确保CSV输出结构完整

可选:合并多版本为单个字符串

如果你的需求是将多个版本用逗号拼接成单个字符串(每个条目仅输出一行CSV),可以使用这个版本:

.result[] | [
  "https://vuldb.com/?id." + .entry.id,
  .software.vendor // "empty",
  .software.name // "empty",
  (.software.version // [] | map(tostring) | join(",") // "empty"),
  .software.type // "empty",
  .software.platform // "empty"
]

这个版本会:

  1. 若software.version不存在,默认使用空数组[]
  2. 将数组中的每个版本转为字符串后用逗号拼接
  3. 拼接结果为空时(比如空数组),替换为"empty"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 15:34:43