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

如何在PowerShell中用jq处理含$符号的JSON键并将结果存入数组变量

核心原因

PowerShell的符号解析、外部命令参数传递规则和类Unix shell不同:

  • 第一种写法里PowerShell将$ref识别为自身变量,未定义时默认展开为空,导致传给jq的表达式逻辑错误,返回全量JSON内容
  • 第二种写法里PowerShell传递参数时自动吞掉了表达式内的双引号,导致jq收到的表达式存在语法错误

可行的命令写法

推荐用单引号包裹整个jq过滤表达式,将属性访问语法改为数组索引格式,内部单引号用两个单引号转义即可:

# 直接运行查看结果
jq '.. |.[''$ref'']? | select(. != null)' .\swagger.json

如果需要去掉返回值两端的引号,给jq添加-r参数:

jq -r '.. |.[''$ref'']? | select(. != null)' .\swagger.json

结果存入PowerShell数组

用@()包裹命令强制转换为数组,避免返回单条结果时变量类型为字符串:

# 存为字符串数组(带引号)
$refList = @(jq '.. |.[''$ref'']? | select(. != null)' .\swagger.json)

# 存为纯文本数组(不带引号)
$refList = @(jq -r '.. |.[''$ref'']? | select(. != null)' .\swagger.json)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 14:45:01