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

PowerShell 5中将哈希表数组转换为JSON出现非预期结果如何处理

问题原因&解决方法

你踩了3个典型的PowerShell 5序列化坑,调整代码如下即可得到预期的单层数组JSON:

步骤1:修正数组构造逻辑

删掉多余的嵌套花括号和不必要的逗号前缀,直接用@()包裹生成数组即可:

$body = @($someArray | ForEach-Object {
    @{
        name = $_
    }
})

步骤2:正确调用ConvertTo-Json

PowerShell 5的管道会默认展开数组,直接把数组传入管道会被识别为单个对象,序列化为带Count/value的结构。避免这个问题有两种常用写法:

写法1:把数组作为InputObject参数传入(推荐)
ConvertTo-Json -InputObject $body -Depth 3
写法2:管道传输时禁用数组展开
Write-Output $body -NoEnumerate | ConvertTo-Json -Depth 3

两种写法输出的结果都是你需要的单层数组:

[
    {
        "name": "test"
    },
    {
        "name": "test-2"
    }
]

就算$someArray只有1个元素,输出也会保留数组格式,不会转成单个哈希表结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 19:45:01