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

PowerShell修改JSON配置:首次运行未生成子属性问题解析

PowerShell脚本生成空ParentObj的原因解析

PowerShell处理JSON解析后的PSCustomObject时,不会自动隐式创建嵌套的对象层级,这就是导致你遇到问题的核心原因。

具体过程拆解

当你的settings.json是空对象{}时:

  1. 通过ConvertFrom-Json解析后,得到的$settings是一个空的PSCustomObject
  2. 脚本里-not $settings.ParentObj判断成立(因为ParentObj属性不存在,逻辑上视为$false),所以进入section 1分支
  3. 但直接执行$settings.ParentObj.ChildProp = "xxx"时,由于$settings.ParentObj本身是$null,PowerShell不会自动为你创建这个嵌套对象,赋值操作相当于对空值操作,完全不会生效
  4. 最终$settings中的ParentObj依然是$null,转成JSON后就显示为空对象"ParentObj": {}

修正示例

要让嵌套属性生效,必须先显式创建ParentObj对象,再给子属性赋值:

$settingsPath = ".\settings.json"
$settings = Get-Content $settingsPath | ConvertFrom-Json

if (-not $settings.ParentObj) {
    Write-Host "section 1"
    # 先创建ParentObj为PSCustomObject并直接赋值子属性
    $settings.ParentObj = [PSCustomObject]@{
        ChildProp = "your-value-here"
    }
}

$settings | ConvertTo-Json -Depth 10 | Set-Content $settingsPath

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 08:14:56