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

PowerShell中自动展开Invoke-RestMethod返回结构并导出CSV的方法

PowerShell 动态展开嵌套对象导出CSV解决方案

核心思路

实现一个通用的递归展平函数,自动遍历对象的所有层级属性,将嵌套属性的名称用下划线拼接父属性名作为新的字段名,最终生成扁平化的对象直接用于CSV导出,无需手动指定任何字段。

完整实现代码

# 定义递归展平对象的通用函数
function Flatten-Object {
    param (
        [Parameter(ValueFromPipeline)]
        $InputObject,
        [string]$Prefix = ""
    )
    process {
        # 初始化存储展平后属性的哈希表
        $output = [ordered]@{}
        # 处理PSCustomObject类型(Invoke-RestMethod解析JSON默认返回类型)
        if ($InputObject -is [PSCustomObject]) {
            $properties = $InputObject.PSObject.Properties.Name
        }
        # 处理哈希表类型
        elseif ($InputObject -is [hashtable]) {
            $properties = $InputObject.Keys
        }
        # 普通值类型直接返回
        else {
            return $InputObject
        }
        foreach ($prop in $properties) {
            $value = $InputObject.$prop
            # 拼接当前属性的完整名称
            $fullPropName = if ($Prefix) { "${Prefix}_${prop}" } else { $prop }
            # 判断是否为嵌套的可展开对象
            if ($value -is [PSCustomObject] -or $value -is [hashtable]) {
                # 递归展开嵌套对象,将当前属性名作为前缀传入
                $nested = Flatten-Object -InputObject $value -Prefix $fullPropName
                foreach ($nestedProp in $nested.Keys) {
                    $output[$nestedProp] = $nested[$nestedProp]
                }
            }
            else {
                # 普通属性直接加入结果
                $output[$fullPropName] = $value
            }
        }
        # 返回展平后的自定义对象
        return [PSCustomObject]$output
    }
}

# 原有请求逻辑不变
$response = Invoke-RestMethod -Method Get -Uri $url -Headers $requestHeaders

# 直接展平后导出CSV,无需手动指定任何字段
$response | Flatten-Object | Export-Csv -Path $filePath -NoTypeInformation -Encoding UTF8 -Delimiter ";"

效果说明

针对你提供的示例JSON结构,上述代码导出的CSV会自动生成HistoricalProperties_PropertyName、ActualProperties_Sum等符合你要求格式的字段,和你期望的输出格式完全匹配。

  • 支持任意层级的嵌套结构,无需修改函数代码
  • 同时兼容PSCustomObject和哈希表两种嵌套结构
  • API返回数组的结构统一时可直接使用,若存在部分对象缺失字段的场景,导出时会自动留空对应列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:06:00