PowerShell中将JSON数组写入文件时如何避免列表扁平化保留数组结构
问题根因
PowerShell管道默认会展开数组对象,你用@()创建的只有一个元素的数组通过管道传递给ConvertTo-Json时,管道会把内层的单个哈希表单独传给命令,ConvertTo-Json接收的输入是单个对象而非数组,最终输出自然就丢失了外层数组结构。
解决方案
有两种常用方法可以避免数组被管道展开,保留外层数组格式:
- 方法1:使用逗号运算符强制把整个数组作为单个对象传入管道
,$json | ConvertTo-Json | Set-Content $filepath
- 方法2:直接将数组作为
-InputObject参数传入ConvertTo-Json,不走管道自动展开逻辑
ConvertTo-Json -InputObject $json | Set-Content $filepath
执行上述任意命令后,输出的JSON就会保留预期的外层数组括号。
内容的提问来源于stack exchange,提问作者user17562396
相关产品推荐
相关产品推荐

