更正 json 以将父 link 添加到 TFS 工作项
Correct json to add a parent link to a TFS work item
我正在尝试使用 powershell 和 json 将父项 link 添加到 TFS 工作项。我们有一个内部 TFS 服务器(即,不是团队服务)。
我得到了查询的答案,因此我与 TFS 的连接正常,但是当我尝试更新时出现以下错误:
"You must pass a valid patch document in the body of the request."
我是一个 json 菜鸟,我的 json 骨架就是从这个 MSDN page
中得到的
这是我的 json:
[
{
"op": "add",
"path": "/relations/-",
"value":
{
"rel": "System.LinkTypes.Hierarchy-Reverse",
"url": "https://tfs.myCompany.org/tfs/DefaultCollection/_apis/wit/workitems/259355",
"attributes":
{
{ "isLocked": false }
}
}
}
]
我根据我发现的其他一些 json 示例在几个地方用方括号进行了测试,但它们没有帮助,所以我返回到上面 MSDN 页面的语法。
这是我正在使用的 powershell 脚本。
param(
[System.String]$TaskId=288346
)
$username = "myUserInfo"
$password = "myPassword"
$securePassword = $password | ConvertTo-SecureString -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential($username, $securePassword)
$taskItemURL ="https://tfs.myCompanynet.org/tfs/DefaultCollection/_apis/wit/workitems/$TaskId"
$taskItemRequest = $taskItemUrl+'?$expand=relations'
$taskItemJson = Invoke-RestMethod -uri "$taskItemRequest" -Method get -
Credential $credential
if($taskItemJson.relations)
{
write-host "relation exists: " $taskItemJson.relations[0].url
}
else
{
write-host "relation does not exist. Creating it."
$jsonTemplate = Get-Content E:\scripts\JsonTemplate.txt # | ConvertTo-Json
$result = Invoke-RestMethod -uri $taskItemURL"?api-version=1.0" -Method patch -UseDefaultCredentials -ContentType application/json-patch+json -body $jsonTemplate
}
如您所见,我已经注释掉了 convertTo-json 因为我收到了这个错误:
ConvertTo-Json :转换后的 JSON 字符串格式错误。
我不确定我是否收到该错误,因为它已经是 json.
我还测试了跳过 get-content 并使用 -inFile 参数,但它导致了上述相同的错误。
$result = Invoke-RestMethod -uri $taskItemURL"?api-version=1.0" -Method patch -Credential $credential -ContentType application/json-patch+json -InFile E:\scripts\JsonTemplate.txt
关于我的 json 有什么问题吗?
谢谢!
啊!我是如此接近。我偶然猜测属性下的双花括号是错误的,即使 the documentation 看起来应该如此。当我删除它们时,它工作得很好。
现在我的 json 看起来像这样:
[
{
"op": "add",
"path": "/relations/-",
"value":
{
"rel": "System.LinkTypes.Hierarchy-Reverse",
"url": "https://tfs.myCompany.org/tfs/DefaultCollection/_apis/wit/workitems/259355",
"attributes":
{
"isLocked": false
}
}
}
]
我正在尝试使用 powershell 和 json 将父项 link 添加到 TFS 工作项。我们有一个内部 TFS 服务器(即,不是团队服务)。
我得到了查询的答案,因此我与 TFS 的连接正常,但是当我尝试更新时出现以下错误:
"You must pass a valid patch document in the body of the request."
我是一个 json 菜鸟,我的 json 骨架就是从这个 MSDN page
中得到的这是我的 json:
[
{
"op": "add",
"path": "/relations/-",
"value":
{
"rel": "System.LinkTypes.Hierarchy-Reverse",
"url": "https://tfs.myCompany.org/tfs/DefaultCollection/_apis/wit/workitems/259355",
"attributes":
{
{ "isLocked": false }
}
}
}
]
我根据我发现的其他一些 json 示例在几个地方用方括号进行了测试,但它们没有帮助,所以我返回到上面 MSDN 页面的语法。
这是我正在使用的 powershell 脚本。
param(
[System.String]$TaskId=288346
)
$username = "myUserInfo"
$password = "myPassword"
$securePassword = $password | ConvertTo-SecureString -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential($username, $securePassword)
$taskItemURL ="https://tfs.myCompanynet.org/tfs/DefaultCollection/_apis/wit/workitems/$TaskId"
$taskItemRequest = $taskItemUrl+'?$expand=relations'
$taskItemJson = Invoke-RestMethod -uri "$taskItemRequest" -Method get -
Credential $credential
if($taskItemJson.relations)
{
write-host "relation exists: " $taskItemJson.relations[0].url
}
else
{
write-host "relation does not exist. Creating it."
$jsonTemplate = Get-Content E:\scripts\JsonTemplate.txt # | ConvertTo-Json
$result = Invoke-RestMethod -uri $taskItemURL"?api-version=1.0" -Method patch -UseDefaultCredentials -ContentType application/json-patch+json -body $jsonTemplate
}
如您所见,我已经注释掉了 convertTo-json 因为我收到了这个错误: ConvertTo-Json :转换后的 JSON 字符串格式错误。 我不确定我是否收到该错误,因为它已经是 json.
我还测试了跳过 get-content 并使用 -inFile 参数,但它导致了上述相同的错误。
$result = Invoke-RestMethod -uri $taskItemURL"?api-version=1.0" -Method patch -Credential $credential -ContentType application/json-patch+json -InFile E:\scripts\JsonTemplate.txt
关于我的 json 有什么问题吗?
谢谢!
啊!我是如此接近。我偶然猜测属性下的双花括号是错误的,即使 the documentation 看起来应该如此。当我删除它们时,它工作得很好。
现在我的 json 看起来像这样:
[
{
"op": "add",
"path": "/relations/-",
"value":
{
"rel": "System.LinkTypes.Hierarchy-Reverse",
"url": "https://tfs.myCompany.org/tfs/DefaultCollection/_apis/wit/workitems/259355",
"attributes":
{
"isLocked": false
}
}
}
]