Export (0) Print
Expand All

ConvertTo-Json

Published: February 29, 2012

Updated: November 13, 2012

Applies To: Windows PowerShell 3.0

ConvertTo-Json

Converts an object to a JSON-formatted string

Syntax

Parameter Set: Default
ConvertTo-Json [-InputObject] <Object> [-Compress] [-Depth <Int32> ] [ <CommonParameters>]




Detailed Description

The ConvertTo-Json cmdlet converts any object to a string in JavaScript Object Notation (JSON) format. The properties are converted to field names, the field values are converted to property values, and the methods are removed.

You can then use the ConvertFrom-Json cmdlet to convert a JSON-formatted string to a JSON object, which is easily managed in Windows PowerShell.

Many web sites use JSON instead of XML to serialize data for communication between servers and web-based apps.

This cmdlet is introduced in Windows PowerShell 3.0.

Parameters

-Compress

Omits white space and indented formatting in the output string.


Aliases

none

Required?

false

Position?

named

Default Value

False

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

-Depth<Int32>

Specifies how many levels of contained objects are included in the JSON representation. The default value is 2.


Aliases

none

Required?

false

Position?

named

Default Value

2

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

-InputObject<Object>

Specifies the objects to convert to JSON format. Enter a variable that contains the objects, or type a command or expression that gets the objects. You can also pipe an object to ConvertTo-Json.

The InputObject parameter is required, but its value can be null ($null) or an empty string. When the input object is $null, ConvertTo-Json does not generate any output. When the input object is an empty string, ConvertTo-Json returns an empty string.


Aliases

none

Required?

true

Position?

1

Default Value

none

Accept Pipeline Input?

true (ByValue)

Accept Wildcard Characters?

false

<CommonParameters>

This cmdlet supports the common parameters: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer, and -OutVariable. For more information, see  about_CommonParameters (http://go.microsoft.com/fwlink/p/?LinkID=113216).

Inputs

The input type is the type of the objects that you can pipe to the cmdlet.

  • System.Object

    You can pipe any object to ConvertTo-Json.


Outputs

The output type is the type of the objects that the cmdlet emits.

  • System.String

Notes

  • The ConvertTo-Json cmdlet is implemented by using the JavaScriptSerializer class (http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer(VS.100).aspx).

Examples

Example 1

This command uses the ConvertTo-Json cmdlet to convert a GregorianCalendar object to a JSON-formatted string.


PS C:\> (Get-UICulture).Calendar | ConvertTo-Json
{
"MinSupportedDateTime": "\/Date(-62135568000000)\/",
"MaxSupportedDateTime": "\/Date(253402300799999)\/",
"AlgorithmType": 1,
"CalendarType": 1,
"Eras": [
1
],
"TwoDigitYearMax": 2029,
"IsReadOnly": false
}

Example 2

This command shows the effect of using the Compress parameter of ConvertTo-Json. The compression affects only the appearance of the string, not its validity.


PS C:\> @{Account="User01";Domain="Domain01";Admin="True"} | ConvertTo-Json - Compress
{"Admin":"True","Account":"User01","Domain":"Domain01"}

Example 3

This command shows how to use the ConvertTo-Json and ConvertFrom-Json cmdlet to convert an object to a JSON string and a JSON object.


 

The first command uses the ConvertTo-Json cmdlet to convert a System.DateTime object from the Get-Date cmdlet to a JSON-formatted string. The command uses the Select-Object cmdlet to get all (*) of the properties of the DateTime object.

The output shows the JSON string that ConvertTo-Json returned.


PS C:\> Get-Date | Select-Object -Property * | ConvertTo-Json
{
"DisplayHint": 2,
"DateTime": "Friday, January 13, 2012 8:06:16 PM",
"Date": "\/Date(1326441600000)\/",
"Day": 13,
"DayOfWeek": 5,
"DayOfYear": 13,
"Hour": 20,
"Kind": 2,
"Millisecond": 221,
"Minute": 6,
"Month": 1,
"Second": 16,
"Ticks": 634620819762218083,
"TimeOfDay": {
"Ticks": 723762218083,
"Days": 0,
"Hours": 20,
"Milliseconds": 221,
"Minutes": 6,
"Seconds": 16,
"TotalDays": 0.83768775241087956,
"TotalHours": 20.104506057861109,
"TotalMilliseconds": 72376221.8083,
"TotalMinutes": 1206.2703634716668,
"TotalSeconds": 72376.22180829999
},
"Year": 2012
}

 

The second command uses ConvertFrom-Json to convert the JSON string to a JSON object.


PS C:\> Get-Date | Select-Object -Property * | ConvertTo-Json | ConvertFrom-Json
DisplayHint : 2
DateTime : Friday, January 13, 2012 8:06:31 PM
Date : 1/13/2012 8:00:00 AM
Day : 13
DayOfWeek : 5
DayOfYear : 13
Hour : 20
Kind : 2
Millisecond : 400
Minute : 6
Month : 1
Second : 31
Ticks : 634620819914009002
TimeOfDay : @{Ticks=723914009002; Days=0; Hours=20; Milliseconds=400;
Minutes=6; Seconds=31; TotalDays=0.83786343634490734;
TotalHours=20.108722472277776; TotalMilliseconds=72391400.900200009;
TotalMinutes=1206.5233483366667;
TotalSeconds=72391.4009002}
Year : 2012

Example 4

This command uses the ConvertTo-Json cmdlet to convert a Windows PowerShell help file from XML format to JSON format. You can use a command like this to use the help topic content in a web service application.


PS C:\> $JsonSecurityHelp = Get-Content $pshome\Modules\Microsoft.PowerShell.Security\en-US\Microsoft.PowerShell.Security.dll-Help.xml | ConvertTo-Json

Related topics



Was this page helpful?
(1500 characters remaining)
Thank you for your feedback

Community Additions

ADD
Show:
© 2014 Microsoft