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

使用jq条件提取JSON中无contentType属性且以BT开头的ID

使用jq条件提取JSON中无contentType属性且以BT开头的ID

看起来你现在的jq命令因为保留了原JSON的结构,导致深层嵌套的ID(比如BT-10)没被正确提取出来。咱们换个思路,直接递归遍历所有节点,筛选符合条件的ID然后收集成数组就可以解决这个问题了。

试试这个jq命令:

[.. | select(type == "object" and has("id") and .id | startswith("BT") and (has("contentType") | not)) | .id]

我来拆解下这个命令的逻辑:

  • ..:这个符号会递归遍历JSON里的每一个节点,不管嵌套多深的对象都能被扫到,完美解决你遇到的深层ID提取问题
  • select(...):用来筛选符合所有条件的对象:
    • type == "object":先确保当前节点是一个对象(不是数组或字符串)
    • has("id"):对象必须包含id字段
    • .id | startswith("BT"):id的值要以BT开头
    • (has("contentType") | not):对象不能包含contentType字段
  • | .id:把筛选出来的对象的id值提取出来
  • 最外层的[]:把所有提取到的id值打包成一个数组

用这个命令处理你的JSON,会直接得到你想要的最优结果:

["BT-03", "BT-Care", "BT-10"]

备注:内容来源于stack exchange,提问作者Skoby

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 14:02:41