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

Windows 10环境下如何用JQ 1.5直接处理PowerShell中的JSON数据?

直接在PowerShell中传递JSON数据给jq(跳过文件存储)

嘿,这个需求完全能实现!在Windows 10的PowerShell环境下,你根本不需要把JSON存到本地文件再给jq处理,直接通过管道或者变量传递就搞定了,我给你分享两种亲测好用的方法:

方法1:通过管道直接传递(最常用)

这里分两种情况,取决于你用的是Invoke-RestMethod还是Invoke-WebRequest:

如果你用的是Invoke-RestMethod

这个 cmdlet 默认会把返回的JSON转换成PowerShell对象,所以需要先把它转回JSON字符串再传给jq,记得加上足够的-Depth参数避免嵌套结构被截断:

# 直接从接口拿数据,转成JSON后通过管道传给jq处理
Invoke-RestMethod -Uri "https://你的接口地址" | ConvertTo-Json -Depth 10 | jq '. | 你的jq转换逻辑'

提示:-Depth的值根据你JSON数据的嵌套层级调整,默认值2很容易不够用,比如嵌套3层以上就会被截断成System.Object[],导致jq处理失败。

如果你用的是Invoke-WebRequest

这个 cmdlet 返回的是响应对象,直接取它的Content属性就是原始的JSON字符串,不用额外转换:

# 直接提取响应的原始JSON内容传给jq
Invoke-WebRequest -Uri "https://你的接口地址" | Select-Object -ExpandProperty Content | jq '. | 你的jq转换逻辑'

方法2:通过变量传递(适合需要复用JSON数据的场景)

先把JSON数据存在PowerShell变量里,再传给jq,有两种方式:

方式A:变量通过管道传递

# 先把JSON数据存入变量
$jsonContent = Invoke-RestMethod -Uri "https://你的接口地址" | ConvertTo-Json -Depth 10

# 把变量内容通过管道传给jq
$jsonContent | jq '. | 你的jq转换逻辑'

方式B:用jq的--argjson参数传递

这种方式可以直接把PowerShell变量里的JSON当作jq的原生JSON对象来处理,不用jq再额外解析字符串:

# 先把JSON数据存入变量
$jsonContent = Invoke-RestMethod -Uri "https://你的接口地址" | ConvertTo-Json -Depth 10

# 用--argjson把变量传给jq,在jq里用$data引用这个对象
jq --argjson data "$jsonContent" '$data | 你的jq转换逻辑'

小提醒

  • 如果你处理的JSON数据里有特殊字符(比如引号),PowerShell会自动处理转义,不用手动调整;
  • 确保你的jq 1.5版本支持--argjson参数(1.5是支持的,放心用);
  • 测试的时候可以先把jq的转换逻辑换成简单的., 看看输出是否正常,再逐步调整转换规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:35:21