如何让单元素数组在JSON中生成方括号(PowerShell场景)
问题
我尝试用以下PowerShell代码创建JSON数组:
$bodyObject = @( @{ 'Username' = 'email0@email.com' } ) $body = $bodyObject | ConvertTo-Json
但生成的$body没有方括号:
{ "Username": "email0@email.com" }
添加第二个元素后就能正常生成带方括号的JSON数组:
$bodyObject = @( @{ 'Username' = 'email0@email.com' }, @{ 'Username' = 'email1@email.com' } ) $body = $bodyObject | ConvertTo-Json <# Output: [ { "Username": "email0@email.com" }, { "Username": "email1@email.com" } ] #>
请问如何让单元素数组生成包含方括号的JSON?
解决方案
PowerShell的ConvertTo-Json默认会把单元素数组“折叠”成单个对象,要强制生成数组格式,有两种实用方法:
方法1:使用-AsArray参数(PowerShell 6+支持)
直接在ConvertTo-Json命令后添加-AsArray参数,强制输出为数组结构:
$bodyObject = @( @{ 'Username' = 'email0@email.com' } ) $body = $bodyObject | ConvertTo-Json -AsArray
输出结果:
[ { "Username": "email0@email.com" } ]
方法2:手动嵌套数组(兼容所有PowerShell版本)
如果使用PowerShell 5.1及更早版本,没有-AsArray参数,可以将目标对象嵌套进另一个数组后再转换,同时注意设置-Depth参数避免嵌套结构被截断:
$bodyObject = @( @{ 'Username' = 'email0@email.com' } ) $body = @($bodyObject) | ConvertTo-Json -Depth 2
内容的提问来源于stack exchange,提问作者David Klempfner
相关产品推荐
相关产品推荐

