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

如何让ConvertTo-JSON将空/Null数组转为[]而非[""]?

解决PowerShell ConvertTo-JSON把空/Null数组转成[""]的问题

问题根源

把$null强转成[array]时,PowerShell会生成一个包含单个$null元素的数组(即@($null))。而ConvertTo-Json默认会将数组内的$null序列化为空字符串,最终输出成[""],而非期望的空数组[]。

解决办法

直接用空数组字面量@()初始化变量,替代[array]$null;如果变量是动态获取的、可能为$null,则通过判断转为空数组。

调整后的代码示例

$version = $null
$profile = $null
$versions = $null
$versionsAsArray = $null
# 直接初始化为空数组
$offices = @()
$roles = @()
$versions = [ordered]@{
        "version" = $active_version;
        "default_office" = $line.'Default Office'.TrimEnd("`n");
        "offices" = $offices;
        "roles" = $roles;
}
[array]$versionsAsArray += $versions
[array]$docArray += $versionsAsArray
$docArray | ConvertTo-Json -Depth 4 | Out-File -FilePath $env:USERPROFILE\desktop\abc.json -Force

动态场景适配(数组可能有值也可能为空)

如果$offices/$roles是动态获取的、存在为$null的情况,可以这样处理:

# PowerShell 7及以上版本用空合并运算符
$offices = $dynamicValue ?? @()

# 兼容旧版本的写法
$offices = if ($dynamicValue -eq $null) { @() } else { [array]$dynamicValue }

调整后预期输出

"offices": [],
"roles": []

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 10:30:45