Powershell 从数组创建Json文档

Powershell 从数组创建Json文档,powershell,Powershell,我用这种方法创建了一个数组 [System.Collections.ArrayList]$Fruits = "A", "B" 现在我想要一个Json文档,看起来像这样 { 'fruits':['A', 'B'] } 我不知道如何创建密钥作为 $fruits | ConvertTo-Json 只是创造了这个 [ "A", "B" ] 您应该使用水果属性构建对象: $obj = New-Objec

我用这种方法创建了一个数组

[System.Collections.ArrayList]$Fruits = "A", "B"
现在我想要一个Json文档,看起来像这样

{
'fruits':['A', 'B']
}
我不知道如何创建密钥作为

$fruits | ConvertTo-Json
只是创造了这个

[
    "A",
    "B"
]

您应该使用水果属性构建对象:

$obj = New-Object psobject -Property @{fruits = "A", "B"}
$obj | ConvertTo-Json
另一种方式:

$obj = "" | Select-Object -Property fruits
$obj.fruits =  "A", "B"
$obj | ConvertTo-Json
给出:

{
    "fruits":  [
                   "A",
                   "B"
               ]
}
小心原始的
深度
为3,你应该给出你需要的深度并使用
-压缩

$obj | ConvertTo-Json -Depth 5 -Compress 
它给出:

{"fruits":["A","B"]}

您并不是说您正在使用哪个版本的PowerShell。 因此,我想继续从@JPBlanc获得有用的答案;如果这是在PowerShell Core(PSv7)上,那么这个

转换为Json

$Host
#结果
(Get命令-Name转换为Json).Parameters.Keys
#结果
[System.Collections.ArrayList]$Fruits='A','B'
converttojson-AsArray@($Fruits)-压缩
#结果

converttojson-AsArray@($Fruits)
#结果

JPBlanc
,这个
$fruits | ConvertTo Json
应该是这个
$obj | ConvertTo Json
,因为$obj是您创建用来保存要转换的信息的东西吗?@postanote您是对的,复制错误/过去了。谢谢你,不用担心,这对那些还在玩WinPS的人来说是件好事。然而,我们应该点击SP搜索框,或者告诉OP这样做,并将其作为一个重复的问题关闭,因为这是一个重复的几个问答和公认的答案。哦,好吧,下次吧。谢谢@JPBlanc我没有意识到我必须创建一个名为像Json文档中所需的键那样的属性的对象。再想一想,这完全有道理。所以,你的回答对我帮助很大。顺便说一句,我们应该在你之前指出这一点,我们回答;因为根据PSCore的MSDoc Powershell帮助文件,您的用例并不是真正的新事物。然而,这真是太遗憾了,还有更多的事情,在网上和Youtube上都是如此。谢谢你花时间,但不幸的是,我无法得到你的答案来创建我需要的Json。我在寻找JPBlanc答案中缺少的object.property-value链接到json-key:value范例
$Host
# Results
<#
Name             : ConsoleHost
Version          : 7.1.3
InstanceId       : 1eed2704-3482-499f-b86d-d138ff405ad4
UI               : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture   : en-US
CurrentUICulture : en-US
PrivateData      : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
DebuggerEnabled  : True
IsRunspacePushed : False
Runspace         : System.Management.Automation.Runspaces.LocalRunspace
#>

(Get-Command -Name ConvertTO-Json).Parameters.Keys
# Results
<#
InputObject
Depth
Compress
EnumsAsStrings
AsArray
EscapeHandling
Verbose
Debug
ErrorAction
WarningAction
InformationAction
ErrorVariable
WarningVariable
InformationVariable
OutVariable
OutBuffer
PipelineVariable
#>


 [System.Collections.ArrayList]$Fruits = 'A', 'B'
 ConvertTo-Json -AsArray @($Fruits) -Compress
# Results
<#
[["A","B"]]
#>
ConvertTo-Json -AsArray @($Fruits)
# Results
<#
[
  [
    "A",
    "B"
  ]
]
#>