我正在进行如下呼叫,并收到“问题解析JSON”错误。
$pair = "XXXX:XXXXXXXXXXXXXXXXXXXXXXXX"
$bytes = [System.Text.Encoding]::ASCII.GetBytes($pair)
$base64 = [System.Convert]::ToBase64String($bytes)
$basicAuthValue = "Basic $base64"
$Body="{
`"base_tree`": `"2267699d5ea2a632c625693ceef5f7b77b2cda74`",
`"tree`": [
{
`"path`": `"synthetics/MyAccount-MakeAPayment.js`",
`"mode`": `"100644`",
`"type`": `"blob`",
`"content`" : `"require('new-relic-synthetics-manager');
//----- Add synthetic code below this line
//////////MORE CODE HERE TO CHECKIN///////////`"
}
]
}"
Invoke-RestMethod -Method Post -Uri "https://api.github.com/repos/MYORGANISATION/Test/git/trees" -Body $Body -Headers @{Authorization = $basicAuthValue}
我试图执行github API文档https://developer.github.com/v3/git/trees/#create-a-tree中提到的api,并在提交那些更改之前创建一棵树。
我的要求是修改多个文件并一次性提交更改,因此我将不能依赖https://developer.github.com/v3/repos/contents/#create-a-file中提到的Content API。
当我尝试执行前面提到的代码片段时,我得到了错误。
“消息”:“解析JSON问题”
我知道在Body的content属性中,我正在提供脚本,其中包含换行符,双引号,单引号等我们需要做什么来签入类似脚本?
我已经注意到,即使我们在内容中提供了一个换行符,它也会因相同的错误而失败。即使是Rest Api也不会采用任何以64为基数的字符串。提供base64编码的字符串后,Api调用将正确执行,但我们正在使用编码的字符串创建树。这是不可取的。
高度赞赏API或powershell中的任何建议或解决方法。 预先感谢。
答案 0 :(得分:0)
我建议您使用here-string
写出JSON块,并消除所有反引号以免引号引起来。
这样,更容易发现它是否为有效的json。
$Body= @"
{
"base_tree": "2267699d5ea2a632c625693ceef5f7b77b2cda74",
"tree": [{
"path": "synthetics/MyAccount-MakeAPayment.js",
"mode": "100644",
"type": "blob",
"content": "require('new-relic-synthetics-manager')"
}]
}
"@
使用JSONLint之类的在线JSON验证程序来检查它是否确实是有效的json。
JSON不使用注释行;都是数据。