Пользователь atscripter отправляет владельцам пакета следующее сообщение 'ConvertTo-Expression' :
" Я наткнулся на вашу" flatten-object"статья, когда я пытался изменить поведение PowerShell по умолчанию. Я обратился за помощью к stackoverflow и technet, и вместо того, чтобы писать код с нуля, я задавался вопросом, насколько трудно будет настроить« flatten-object »для достижения желаемого эффекта? Кажется, что функция выполняет сложную часть итерации по объектам. Я просто недостаточно квалифицирован, чтобы заставить их выводить данные в нужном формате. Ваш вклад очень важен!"
Для этого не нужно переписывать командлет flatten-object
или ConvertTo-Expression
.
Вам просто нужно сначала пройтись по level, а затем вызовите ConvertTo-Expression
командлет (или собственный ConvertTo-Json
командлет) для каждого свойства:
In PowerShell Формат:
$Properties = @{}
($Json | ConvertFrom-Json).PSObject.Properties |
ForEach-Object {$Properties.($_.Name) = $_.Value |
ConvertTo-Expression -Expand -1}
[PSCustomObject]$Properties
Результаты:
outer outerArray outerHash
----- ---------- ---------
'value1' 'value2','value3' [PSCustomObject]@{'inner'='value4';'innerArray'='value5','value6';'innerHash'=[PSCustomObject]@{'innermost1'='value7';'innermost2'='value8';'innermost3'='value9'}}
In Json Формат:
($Json | ConvertFrom-Json).PSObject.Properties |
ForEach-Object {$Properties.($_.Name) = $_.Value |
ConvertTo-Json -Depth 5 -Compress}
Результат в несколько ином (Json) формате:
outer outerArray outerHash
----- ---------- ---------
"value1" ["value2","value3"] {"inner":"value4","innerArray":["value5","value6"],"innerHash":{"innermost1":"value7","innermost2":"value8","innermost3":"value9"}}