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

PowerShell如何从带HTTP头的响应字符串中提取JSON

提取API响应中HTTP头后的JSON内容(PowerShell)

嘿,这个问题我之前也碰到过!PowerShell调用API返回的响应混了HTTP头和JSON,总不能硬删前N行对吧?其实有个超简洁的方法,利用HTTP协议的规则直接拆分就行。

核心思路

HTTP响应里,头信息和正文的分隔符是两个连续的回车换行符(也就是你看到的空行,对应\r\n\r\n)。我们可以直接用这个分隔符把整个字符串拆成两部分,取第二部分就是纯JSON了。

具体代码实现

假设你的API响应字符串存在$response变量里,一行代码就能搞定:

# 拆分字符串为两部分,取第二部分(JSON内容)
$jsonContent = $response -split '\r\n\r\n', 2 | Select-Object -Index 1

这里的关键是-split的第二个参数2,它告诉PowerShell只把字符串拆成最多两部分,避免后续的换行符干扰拆分结果。

测试示例(用你提供的响应)

我拿你给的示例响应做了个测试,代码如下:

# 模拟API返回的响应字符串
$sampleResponse = @"
HTTP/1.1 200 OK
X-VMWARE-VCLOUD-REQUEST-ID: 6dbdbd65-adea-44de-a6a1-cdc8a9671f0b
X-VMWARE-VCLOUD-REQUEST-EXECUTION-TIME: 30,30
Vary: Accept-Encoding, User-Agent
Content-Length: 2681
Cache-Control: no-store, must-revalidate
Content-Type: application/vnd.vmware.vcloud.query.records+json;version=36.2
Date: Tue, 17 Jan 2023 18:10:36 GMT

{
  "otherAttributes" : { },
  "link" : [ {
    "otherAttributes" : { },
}
"@

# 提取JSON部分
$jsonContent = $sampleResponse -split '\r\n\r\n', 2 | Select-Object -Index 1

# 转成PowerShell对象(可选)
$jsonObject = $jsonContent | ConvertFrom-Json

执行后$jsonContent就是你需要的纯JSON字符串,直接用ConvertFrom-Json转成对象就能操作了。

为什么这个方法更好?

比起把所有行拆出来再遍历找空行,这个方法一步到位,代码更简洁,效率也更高——毕竟不用循环处理每一行,直接按协议标准拆分就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 10:35:41