You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell向现有JSON指定位置添加JSON内容的技术问题

PowerShell 向JSON指定数组位置添加元素解决方案

操作步骤

  1. 将JSON字符串转换为PowerShell自定义对象
    目标JSON和待添加的JSON块都需要先转为PowerShell可直接操作的对象,避免直接处理字符串带来的类型不兼容问题。
  2. 定位目标数组
    找到environments数组第一个元素下的deployPhases数组,这是需要追加元素的位置。
  3. 追加元素到数组
    利用PowerShell的数组操作语法,将待添加对象追加到目标数组中。

完整代码示例

# 定义要添加的JSON块
$manualInterventionJson = @"
{
    "deploymentInput": {
        "parallelExecution": {
            "parallelExecutionType": 0
        },
        "timeoutInMinutes": 0,
        "jobCancelTimeoutInMinutes": 1,
        "condition": "succeeded()",
        "overrideInputs": {}
    },
    "rank": 2,
    "phaseType": 2,
    "name": "Agentless job",
    "refName": null,
    "workflowTasks": [
        {
            "environment": {},
            "taskId": "bcb64569-d51a-4af0-9c01-ea5d05b3b622",
            "version": "8.*",
            "name": "Manual Intervention",
            "refName": "",
            "enabled": true,
            "alwaysRun": false,
            "continueOnError": false,
            "timeoutInMinutes": 0,
            "retryCountOnTaskFailure": 0,
            "definitionType": "task",
            "overrideInputs": {},
            "condition": "succeeded()",
            "inputs": {
                "instructions": "test blablabla",
                "emailRecipients": "",
                "onTimeout": "reject"
            }
        }
    ]
}
"@

# 目标JSON示例(实际场景可来自文件或其他数据源)
$targetJson = @"
{
    "source": 2,
    "variables": {},
    "environments": [{
        "name": "Deploy",
        "rank": 1,
        "deployPhases": [{            
            "rank": 1,
            "phaseType": 1,
            "name": "Agent job",
            "refName": null,
            "workflowTasks": [{
                "environment": {},
                "taskId": "##TASK_GROUP_ID##",
                "version": "1.*",
                "name": "##TASK_GROUP_NAME##",
                "condition": "succeededOrFailed()",
                "inputs": {}
            }]
        }],
        "postDeploymentGates": {
            "id": 0,
            "gatesOptions": null
        },
        "environmentTriggers": []
    }]
}
"@

# 将JSON转换为PowerShell对象
$targetObj = $targetJson | ConvertFrom-Json
$manualObj = $manualInterventionJson | ConvertFrom-Json

# 追加元素到deployPhases数组
$targetObj.environments[0].deployPhases += $manualObj

# 可选:验证结果(转成JSON输出查看)
# $targetObj | ConvertTo-Json -Depth 10

关键补充说明

  • 类型匹配问题解决:通过ConvertFrom-Json统一对象类型,彻底避免直接操作字符串或Dictionary时的类型不兼容报错。
  • 大规模数组优化:如果处理的数组元素较多,建议将deployPhases转为ArrayList再使用.Add()方法,提升性能:
    $deployPhasesList = [System.Collections.ArrayList]$targetObj.environments[0].deployPhases
    $deployPhasesList.Add($manualObj) | Out-Null
    $targetObj.environments[0].deployPhases = $deployPhasesList
    
  • 嵌套结构输出:使用ConvertTo-Json输出结果时,必须指定足够的-Depth值,防止嵌套JSON结构被截断。

内容的提问来源于stack exchange,提问作者Dieter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 17:07:12