2016-10-14 3 views
1

У меня есть массив, который я конвертирую в json. Но я хочу, чтобы каждый объект в массиве был обернут другим полем.Add Field Wrapping JSON - PowerShell

$Array = 

Field1; Field2 
----------------- 
Value11; Value12 
Value21; Value22 

Если преобразовать этот массив в JSON это выглядит следующим образом:

Array 
[ 
    { 
     "Field1": "Value11", 
     "Field2": "Value12" 
    }, 
    { 
     "Field1": "Value21", 
     "Field2": "Value22" 
    } 
] 

Я хочу, чтобы выглядеть следующим образом:

Array 
[ 
    {"NewWrapper": 
     { 
     "Field1": "Value11", 
     "Field2": "Value12" 
     } 
    }, 
    {"NewWrapper": 
     { 
     "Field1": "Value21", 
     "Field2": "Value22" 
     } 
    } 
] 

Как отформатировать источник или json для достижения этого?

ответ

1

Попробуйте следующее:

$Array | ForEach-Object { @{ NewWrapper=$_ } } | ConvertTo-Json 

@{ NewWrapper=$_ } обертывания каждый вход объекта в хэш-таблице (@{ ... }), чей один и только вход, NewWrapper, является входным объектом ($_).

Когда ConvertTo-Json сериализует эту хеш-таблицу, она производит желаемый результат.


Полный пример:

# Create sample input objects... 
$Array = [pscustomobject] @{ Field1 = 'Value11'; Field2 = 'Value12' }, 
     [pscustomobject] @{ Field1 = 'Value21'; Field2 = 'Value12' } 
# ... wrap them, and convert them to JSON. 
$Array | ForEach-Object { @{ NewWrapper=$_ } } | ConvertTo-Json 
+1

благодаря он отлично работает! –