Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JSON Array in PowerShell

Am trying to generate the below JSON string in PowerShell:

[
    {
        "FirstName": "Test",
        "LastName": "Account2"
    }
]

The code I have at the moment in PowerShell is:

$Body = @{
    @{
        FirstName='Test'
        LastName='Account2'
     }
}

The error I get with this is: Missing '=' operator after key in hash literal.

like image 441
Zac Avatar asked Oct 25 '16 02:10

Zac


2 Answers

The outer [] is a list in JSON and you're trying to use @{}, which is a hashtable in PowerShell. Use @() which is an array (list) in PowerShell:

$Body = @(
    @{
        FirstName='Test'
        LastName='Account2'
    }
)
ConvertTo-Json -InputObject $Body

(and I use -InputObject instead of piping, because PowerShell is obsessed with flattering lists, and drops the list otherwise).

like image 175
TessellatingHeckler Avatar answered Oct 23 '22 01:10

TessellatingHeckler


I had some problems adding new items to the Powershell list. I tried to add an item using the .add() function. This returned the error "Collection was of a fixed size."

Adding items to the list is just simple by using the += symbol.

$Body += @{FirstName='Test2'; LastName='Account3'}

That simple.

like image 1
daniel overdevest Avatar answered Oct 23 '22 01:10

daniel overdevest