如何强制为嵌套数组完全显示JSON
我有以下创建JSON的函数:如何强制为嵌套数组完全显示JSON,json,powershell,Json,Powershell,我有以下创建JSON的函数: Function New-JSONTest { Param ( [Parameter( ParameterSetName = "NewConfig" )] [switch]$NewConfig ) $PSCustomObject = switch ($PSCmdLet.ParameterSetName) { NewConfig { [PSCusto
Function New-JSONTest {
Param (
[Parameter( ParameterSetName = "NewConfig" )]
[switch]$NewConfig
)
$PSCustomObject = switch ($PSCmdLet.ParameterSetName) {
NewConfig {
[PSCustomObject]@{
Menus = @(
[PSCustomObject]@{
Name = "Produktauswahl"
IsEnabledByDefault = $true
IsVisibleByDefault = $true
IsEnabledIf = ""
IsVisibleIf = ""
OnClickAction = [PSCustomObject]@{
ActionCode = 3
Parameter = @(
[PSCustomObject]@{
ParameterName = "TestInput.Menü"
ParameterType = "string"
ParameterValue = "Menus.Name"
}
)
}
},
[PSCustomObject]@{
Name = "Grundkonfiguration"
IsEnabledByDefault = $false
IsVisibleByDefault = $true
IsEnabledIf = ""
IsVisibleIf = ""
OnClickAction = [PSCustomObject]@{
ActionCode = 3
Parameter = @(
[PSCustomObject]@{
ParameterName = "TestInput.Menü"
ParameterType = "string"
ParameterValue = "Menus.Name"
}
)
}
},
[PSCustomObject]@{
Name = "Zubehörkonfiguration"
IsEnabledByDefault = $false
IsVisibleByDefault = $true
IsEnabledIf = ""
IsVisibleIf = ""
OnClickAction = [PSCustomObject]@{
ActionCode = 3
Parameter = @(
[PSCustomObject]@{
ParameterName = "TestInput.Menü"
ParameterType = "string"
ParameterValue = "Menus.Name"
}
)
}
},
[PSCustomObject]@{
Name = "Konfiguration abschliessen"
IsEnabledByDefault = $false
IsVisibleByDefault = $true
IsEnabledIf = ""
IsVisibleIf = ""
OnClickAction = [PSCustomObject]@{
ActionCode = 3
Parameter = @(
[PSCustomObject]@{
ParameterName = "TestInput.Menü"
ParameterType = "string"
ParameterValue = "Menus.Name"
}
)
}
}
)
}
}
}
# Return as JSON
$PSCustomObject | ConvertTo-Json
}
如您所见,在每个菜单
对象中,我有一个OnClickAction
对象,另一个嵌套在数组中的PSCustomObject
当我运行代码时,返回的每个菜单如下所示:
{
"Name": "Produktauswahl",
"IsEnabledByDefault": true,
"IsVisibleByDefault": true,
"IsEnabledIf": "",
"IsVisibleIf": "",
"OnClickAction": "@{ActionCode=3; Parameter=System.Object[]}"
}
我是否可以强制它也在扩展的JSON中显示我的OnClickAction
,而不是在不可读的数组中?基本上,我最终需要的是:
{
"Menus": [
{
"Name": "Produktauswahl",
"IsEnabledByDefault": true,
"IsVisibleByDefault": true,
"IsEnabledIf": "",
"IsVisibleIf": "",
"OnClickAction": {
"ActionCode": "3",
"Parameter": [
"ParameterName": "TestInput.Menü"
"ParameterType": "string"
"ParameterValue": "Menus.Name"
]
}
}
]
}
这是可能的还是我误解了什么?默认情况下,转换为Json
的默认深度限制为2,但您可以使用-depth
设置深度。对于Json,深度为5应该可以:
$PSCustomObject | ConvertTo-Json -Depth 5