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

如何用jq实现对象转数组、输入为数组时原样输出的统一处理

jq 兼容对象/数组输入统一输出数组的实现方案

问题原因

你当前使用的表达式无输出的核心问题在于select函数的特性:当输入不满足select的判断条件时,会直接丢弃该输入,不会进入后续的else分支。当输入为数组时,数组本身没有version键,select(has("version")?)条件不成立,整个输入直接被过滤,因此没有输出。

正确实现

方案1:通用类型判断(推荐)

如果你的需求就是输入为对象时包装为数组,输入已经是数组时原样返回,直接通过类型判断即可:

jq 'if type == "object" then [.] else . end'

测试效果:

  • 输入对象{version: "1.0"},输出:[{"version":"1.0"}]
  • 输入数组[{"version": "1.0"}],原样输出对应数组

方案2:保留version键校验

如果需要仅对包含version键的对象做包装,其他类型输入原样返回,调整写法去掉select即可:

jq 'if type == "object" and has("version") then [.] else . end'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 22:45:04