json - 如何将变量传递到转义的 json 字符串中?
问题描述
我正在尝试将 json 传递给 REST api 调用,以便开始在 VSTS 上构建。
正文有两个作为转义字符串传入的参数,我在调用我的请求之前努力更新参数。我的身体的一个例子如下:
$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。我觉得我很接近但显然错过了一步。
解决方案
显然,您parameters
在另一个 Json 字符串中嵌入了一个 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\"}"
}
推荐阅读
- linux - 无法在 redhat 中使用 yum 安装 libxml2-2.9.1-6.el7_2.3.x86_64
- r - 根据出现返回行的长度
- gradle - 使用 Gradle 时 Cucumber 测试结果的 Cyrillic 输出错误
- nlp - 使用 nlp 回答大型语料库中的定制问题
- angular - 反应形式的角度退订
- python - 我们如何在 pyspark 中使用 dense_rank() 函数?
- r - R上的Plotly Dash - 如何更改标题字符字体
- html - Html 输出加载时间过长
- xml - XSD 到 XML 转换器
- javascript - Echobot 在 Line 上不起作用(不响应消息)