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

PowerShell 7:将带Path信息的PSCustomObject转换为嵌套JSON

还原扁平PSCustomObject为嵌套JSON的简便方法

直接用自定义PowerShell函数就能搞定,不用手动循环拆分路径。这个函数会自动解析扁平对象里的路径属性,逐层构建嵌套结构:

function ConvertFrom-FlatObject {
    param(
        [Parameter(Mandatory, ValueFromPipeline)]
        [PSCustomObject]$InputObject
    )

    $result = [PSCustomObject]@{}

    foreach ($property in $InputObject.PSObject.Properties) {
        # 拆分路径(去掉开头的$.,按.分割节点)
        $pathParts = $property.Name -replace '^\$\.', '' -split '\.'
        $currentNode = $result

        # 遍历路径节点,逐层创建嵌套对象
        for ($i = 0; $i -lt $pathParts.Count; $i++) {
            $part = $pathParts[$i]
            # 如果是最后一个节点,赋值;否则创建嵌套对象
            if ($i -eq $pathParts.Count - 1) {
                $currentNode | Add-Member -MemberType NoteProperty -Name $part -Value $property.Value -Force
            } else {
                if (-not $currentNode.PSObject.Properties[$part]) {
                    $currentNode | Add-Member -MemberType NoteProperty -Name $part -Value ([PSCustomObject]@{}) -Force
                }
                $currentNode = $currentNode.$part
            }
        }
    }

    return $result
}

使用示例

假设你的扁平合并对象是$flatMergedObject,直接用下面的代码就能转成嵌套JSON:

$nestedObject = $flatMergedObject | ConvertFrom-FlatObject
$nestedJson = $nestedObject | ConvertTo-Json -Depth 100

说明

  • 函数自动识别属性名里的路径格式(比如$.user.profile.name),拆分后逐层创建嵌套PSCustomObject
  • -Force参数用于覆盖可能存在的重复路径属性
  • ConvertTo-Json时记得加-Depth,避免嵌套层级过深被截断

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 16:45:30