如何将变量传递到转义的 json 字符串中?
How to pass variables into an escaped json string?
我正在尝试将 json 传递到 REST api 调用中,以便在 VSTS 上开始构建。
body 有两个参数作为转义字符串传入,我在调用我的请求之前努力更新参数。下面是我的 body 的示例:
$body ='
{
"definition":
{
"id": ""
},
"parameters": "{\"environment\":\"uat\", \"browser\": \"ie\"}"
}
'
这被传递到下面我成功更新定义 ID 的地方:
$bodyJson=$body | ConvertFrom-Json
$bodyjson.definition.id = $buildDefId
$bodyString=$bodyJson | ConvertTo-Json -Depth 100
此操作成功,但我无法访问 json 的参数元素以将浏览器和环境作为变量传递。
你对如何做到这一点有什么建议吗?
我尝试了以下但没有成功:
$params = $bodyJson.Paramaters
$params -replace "uat","test"
$bodyString=$bodyJson | ConvertTo-Json -Depth 100
这会更新 $params
中的参数,但在转换时不会传回 json 中。我觉得我很接近但显然错过了一步。
显然您有一个 Json (parameters
) 字符串嵌入到另一个 Json 字符串中。
这意味着您必须 ConvertFrom-Json
两次反序列化所有内容,并且 ConvertTo-Json
两次以使用新参数将其序列化:
(请注意,我交换了变量名称 $body
和 $bodyJson
因为 $body
是一个对象而 $bodyJson
实际上是您的 Json 字符串)
$bodyJson = '
{
"definition": {
"id": ""
},
"parameters": "{\"environment\":\"uat\", \"browser\": \"ie\"}"
}
'
$body = $bodyJson | ConvertFrom - Json
$paramJson = $body.parameters
$parameters = $paramJson | ConvertFrom - Json
$parameters
environment browser
----------- -------
uat ie
更改参数:
$parameters.environment = "test"
并重建 Json 字符串:
$paramJson = $parameters | ConvertTo-Json -Compress
$body.parameters = $paramJson
$bodyJson = $body | ConvertTo-Json
$bodyJson
{
"definition": {
"id": ""
},
"parameters": "{\"environment\":\"test\",\"browser\":\"ie\"}"
}
我正在尝试将 json 传递到 REST api 调用中,以便在 VSTS 上开始构建。
body 有两个参数作为转义字符串传入,我在调用我的请求之前努力更新参数。下面是我的 body 的示例:
$body ='
{
"definition":
{
"id": ""
},
"parameters": "{\"environment\":\"uat\", \"browser\": \"ie\"}"
}
'
这被传递到下面我成功更新定义 ID 的地方:
$bodyJson=$body | ConvertFrom-Json
$bodyjson.definition.id = $buildDefId
$bodyString=$bodyJson | ConvertTo-Json -Depth 100
此操作成功,但我无法访问 json 的参数元素以将浏览器和环境作为变量传递。
你对如何做到这一点有什么建议吗?
我尝试了以下但没有成功:
$params = $bodyJson.Paramaters
$params -replace "uat","test"
$bodyString=$bodyJson | ConvertTo-Json -Depth 100
这会更新 $params
中的参数,但在转换时不会传回 json 中。我觉得我很接近但显然错过了一步。
显然您有一个 Json (parameters
) 字符串嵌入到另一个 Json 字符串中。
这意味着您必须 ConvertFrom-Json
两次反序列化所有内容,并且 ConvertTo-Json
两次以使用新参数将其序列化:
(请注意,我交换了变量名称 $body
和 $bodyJson
因为 $body
是一个对象而 $bodyJson
实际上是您的 Json 字符串)
$bodyJson = '
{
"definition": {
"id": ""
},
"parameters": "{\"environment\":\"uat\", \"browser\": \"ie\"}"
}
'
$body = $bodyJson | ConvertFrom - Json
$paramJson = $body.parameters
$parameters = $paramJson | ConvertFrom - Json
$parameters
environment browser
----------- -------
uat ie
更改参数:
$parameters.environment = "test"
并重建 Json 字符串:
$paramJson = $parameters | ConvertTo-Json -Compress
$body.parameters = $paramJson
$bodyJson = $body | ConvertTo-Json
$bodyJson
{
"definition": {
"id": ""
},
"parameters": "{\"environment\":\"test\",\"browser\":\"ie\"}"
}