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

PowerShell中如何将ArrayList数组转换为含指定键的结构化JSON文档

核心问题原因

直接将ArrayList通过管道传给ConvertTo-Json时,序列化的对象就是ArrayList本身,自然只会输出纯数组结构;要生成带fruits自定义顶层键的JSON,需要先将ArrayList绑定到对象的对应属性上,再对整个对象执行序列化操作。

具体实现步骤
  1. 保留你原本的ArrayList定义:
[System.Collections.ArrayList]$Fruits = "A", "B"
  1. 构造包含目标属性的自定义PowerShell对象,将ArrayList赋值给对象的fruits键:
$requestObject = [PSCustomObject]@{
    fruits = $Fruits
}
  1. 对构造好的对象执行JSON转换:
$requestObject | ConvertTo-Json

执行上述代码后,即可输出完全符合预期的结构:

{"fruits": ["A", "B"]}
常见避坑提示

PowerShell 5.1版本存在默认的数组折叠逻辑:当数组内元素数量少于3个时,序列化过程会自动把属性内的数组展开为标量值,比如把单元素数组"A"转成普通字符串,破坏预期的数组结构。
对应解决方式:

  • 调用ConvertTo-Json时添加-Depth 10参数,匹配JSON对象的嵌套层级,避免层级截断
  • 给对象属性赋值时用数组运算符显式包裹:fruits = @($Fruits),强制PowerShell保持数组类型不展开

如果不想单独定义中间变量,也可以用简化写法直接构造结构完成转换:

@{ fruits = $Fruits } | ConvertTo-Json -Depth 10

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.27 05:15:03