PowerShell调用GitHub GraphQL API报JSON解析错误求助
解决PowerShell调用GitHub GraphQL API时的JSON解析错误
我之前也碰到过类似的问题,你遇到的"Problems parsing json"错误,核心原因是你的请求body不是一个完整的JSON对象。
从你输出的"query":"query { viewer { login }}"可以看出来,这只是JSON对象里的一个键值对,缺少了外层的大括号{}。GitHub GraphQL API要求接收的是一个完整的JSON结构,正确的格式应该是:
{"query":"query { viewer { login }}"}
正确构造请求body的两种方式
在PowerShell里,推荐用以下两种方式来避免格式错误:
1. 直接构造正确的JSON字符串
注意要把整个对象用大括号包裹,同时处理好引号(如果你的查询更复杂,这种方式容易出错,优先选第二种):
$body = '{"query":"query { viewer { login }}"}'
2. 用哈希表转成JSON(更可靠)
先创建一个包含query键的哈希表,再通过ConvertTo-Json自动生成正确的JSON格式,这种方式能避免手动拼接字符串时的引号和格式问题:
# 定义查询内容 $graphqlQuery = "query { viewer { login }}" # 构造哈希表 $requestBody = @{ query = $graphqlQuery } # 转换为JSON格式 $body = $requestBody | ConvertTo-Json
完整的API调用示例
别忘了调用API时要指定Content-Type: application/json,同时带上你的授权令牌:
# 配置请求头,替换成你的GitHub Enterprise令牌 $headers = @{ "Authorization" = "Bearer YOUR_GITHUB_ENTERPRISE_TOKEN" } # 替换成你的GitHub Enterprise实例地址 $apiUri = "https://your-ghe-domain.com/api/graphql" # 发送请求 try { $response = Invoke-RestMethod -Uri $apiUri -Method Post -Headers $headers -Body $body -ContentType "application/json" Write-Output $response.data.viewer.login } catch { Write-Error "请求失败: $_" }
这样调整后,JSON格式就符合GitHub API的要求了,应该就能解决解析错误的问题。
内容的提问来源于stack exchange,提问作者K Split X
相关产品推荐
相关产品推荐

