2014-01-21 2 views
2

Я пытаюсь создать вложенную структуру данных с некоторого ввода и в конечном итоге преобразовать ее в JSON, но у меня возникают проблемы, когда она становится слишком глубокой.Выходных данных PowerShell вложенных типов данных

Структура будет массивом хэша, где один элемент - это другой массив хэша.

Это создает два массива хэш-$baz1 и $baz2

PS D:\> $baz1 = @(@{foo="foo1"; bar="bar1"};@{foo="foo2";bar="bar2"};@{foo="foo3";bar="bar3"}) 
PS D:\> $baz2 = @(@{foo="foo1"; bar="bar1"};@{foo="foo2";bar="bar2"};@{foo="foo3";bar="bar3"}) 

Как вы можете видеть, все выше доска:

PS D:\> $baz1 

Name       Value 
----       ----- 
bar       bar1 
foo       foo1 
bar       bar2 
foo       foo2 
bar       bar3 
foo       foo3 


PS D:\> $baz1|ConvertTo-Json 
[ 
    { 
     "bar": "bar1", 
     "foo": "foo1" 
    }, 
    { 
     "bar": "bar2", 
     "foo": "foo2" 
    }, 
    { 
     "bar": "bar3", 
     "foo": "foo3" 
    } 
] 
PS D:\> 

Но когда я добавить массив $fuz все это идет грушу -образный:

PS D:\> $fuz = @(@{foo="bar"; bash=$baz1};@{foo="beep";bash=$baz2}) 
PS D:\> $fuz 

Name       Value 
----       ----- 
foo       bar 
bash       {System.Collections.Hashtable, System.Collections.Hashtable, System.Collections.Hashtable} 
foo       beep 
bash       {System.Collections.Hashtable, System.Collections.Hashtable, System.Collections.Hashtable} 


PS D:\> $fuz|ConvertTo-Json 
[ 
    { 
     "foo": "bar", 
     "bash": [ 
        "System.Collections.Hashtable", 
        "System.Collections.Hashtable", 
        "System.Collections.Hashtable" 
       ] 
    }, 
    { 
     "foo": "beep", 
     "bash": [ 
        "System.Collections.Hashtable", 
        "System.Collections.Hashtable", 
        "System.Collections.Hashtable" 
       ] 
    } 
] 

Даже без $baz1 Этап

PS D:\> @(@{foo="bar"; [email protected](@{foo="foo1"; bar="bar1"};@{foo="foo2";bar="bar2"};@{foo="foo3";bar="bar3"})};@{foo="beep";bash=$baz2}) 

Name       Value 
----       ----- 
foo       bar 
bash       {System.Collections.Hashtable, System.Collections.Hashtable, System.Collections.Hashtable} 
foo       beep 
bash       {System.Collections.Hashtable, System.Collections.Hashtable, System.Collections.Hashtable} 


PS D:\> 

Настоятельно оцените помощь здесь!

ответ

4

Используйте параметр -Depth в командлете ConvertTo-Json, чтобы развернуть значения дочернего объекта.

+1

Ну, это просто глупо. –

+1

Поскольку выход был также мелким, я не думал смотреть на параметры ConvertTo-json. –

Смежные вопросы