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

PowerShell技术问题:如何生成带累积嵌套属性的JSON输出

解决嵌套Foreach生成嵌套JSON的问题

假设你已经通过API获取到父级结果集合$parentResults(每个元素是包含Name、TotalSize、FileCount的CustomObject),以下是通过嵌套循环填充Files属性并生成目标JSON的具体实现:

# 模拟父级API返回的结果集合(实际场景替换为你的API调用结果)
$parentResults = @(
    [PSCustomObject]@{
        Name = "Value1"
        TotalSize = 15
        FileCount = 2
        Files = @() # 预先初始化空数组,用于后续填充文件数据
    },
    [PSCustomObject]@{
        Name = "Value2"
        TotalSize = 15
        FileCount = 2
        Files = @()
    }
)

# 嵌套循环处理每个父对象,获取关联文件数据并更新Files属性
foreach ($parent in $parentResults) {
    # 替换为你的实际API调用逻辑:根据父对象标识(如Name)获取关联文件列表
    # 示例:$fileResults = Invoke-RestMethod -Uri "https://your-api/files?parent=$($parent.Name)" -Method Get
    
    # 模拟API返回的文件结果
    $fileResults = @(
        [PSCustomObject]@{
            FileName = "File1"
            Checksum = "abc"
        },
        [PSCustomObject]@{
            FileName = "File2"
            Checksum = "abc"
        }
    )

    # 将获取到的文件集合直接赋值给父对象的Files属性
    $parent.Files = $fileResults
}

# 转换为指定格式的JSON,注意-Depth参数要覆盖嵌套层级(默认深度为2)
$finalJson = $parentResults | ConvertTo-Json -Depth 3

# 输出JSON或保存到文件
Write-Output $finalJson
# 保存到文件:$finalJson | Out-File -Path "metadata.json" -Encoding UTF8

关键注意事项

  • 父对象初始化时要给Files属性设置空数组,避免后续赋值出错
  • 使用ConvertTo-Json必须指定足够的-Depth值,否则嵌套的Files数组会被截断
  • 如果API返回的文件数据结构和需求不一致,可在赋值前用Select-Object或自定义PSCustomObject调整字段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 13:25:08