ConvertTo-Json
Converteert een object naar een tekenreeks met JSON-indeling.
Syntax
ConvertTo-Json
[-InputObject] <Object>
[-Depth <Int32>]
[-Compress]
[-EnumsAsStrings]
[-AsArray]
[-EscapeHandling <StringEscapeHandling>]
[<CommonParameters>]
Description
De ConvertTo-Json
cmdlet converteert elk .NET-object naar een tekenreeks in JSON-indeling (JavaScript Object Notation). De eigenschappen worden geconverteerd naar veldnamen, de veldwaarden worden geconverteerd naar eigenschapswaarden en de methoden worden verwijderd.
Notitie
Vanaf PowerShell 7.2 worden extended type system-eigenschappen van datetime - en tekenreeksobjecten niet meer geserialiseerd en wordt alleen het eenvoudige object geconverteerd naar JSON-indeling
U kunt vervolgens de ConvertFrom-Json
cmdlet gebruiken om een tekenreeks met JSON-indeling te converteren naar een JSON-object, dat eenvoudig kan worden beheerd in PowerShell.
Veel websites gebruiken JSON in plaats van XML om gegevens te serialiseren voor communicatie tussen servers en web-apps.
Vanaf PowerShell 7.1 ConvertTo-Json
wordt een waarschuwing verzonden als de diepte van het invoerobject de diepte overschrijdt die is opgegeven voor de opdracht. Dit voorkomt ongewenst gegevensverlies bij het converteren van objecten.
Deze cmdlet is geïntroduceerd in Windows PowerShell 3.0.
Voorbeelden
Voorbeeld 1
(Get-UICulture).Calendar | ConvertTo-Json
{
"MinSupportedDateTime": "0001-01-01T00:00:00",
"MaxSupportedDateTime": "9999-12-31T23:59:59.9999999",
"AlgorithmType": 1,
"CalendarType": 1,
"Eras": [
1
],
"TwoDigitYearMax": 2029,
"IsReadOnly": true
}
Deze opdracht gebruikt de ConvertTo-Json
cmdlet om een GregorianCalendar-object te converteren naar een tekenreeks met JSON-indeling.
Voorbeeld 2
Get-Date | ConvertTo-Json; Get-Date | ConvertTo-Json -AsArray
"2021-08-05T16:13:05.6394416-07:00"
[
"2021-08-05T16:13:05.6421709-07:00"
]
In dit voorbeeld ziet u de uitvoer van ConvertTo-Json
de cmdlet met en zonder de schakelparameter AsArray . U kunt zien dat het tweede gedeelte van de uitvoer tussen vierkante haken is geplaatst.
Voorbeeld 3
@{Account="User01";Domain="Domain01";Admin="True"} | ConvertTo-Json -Compress
{"Domain":"Domain01","Account":"User01","Admin":"True"}
Met deze opdracht ziet u het effect van het gebruik van de parameter Comprimeren van ConvertTo-Json
. De compressie heeft alleen invloed op het uiterlijk van de tekenreeks, niet op de geldigheid ervan.
Voorbeeld 4
Get-Date | Select-Object -Property * | ConvertTo-Json
{
"DisplayHint": 2,
"DateTime": "October 12, 2018 10:55:32 PM",
"Date": "2018-10-12T00:00:00-05:00",
"Day": 12,
"DayOfWeek": 5,
"DayOfYear": 285,
"Hour": 22,
"Kind": 2,
"Millisecond": 639,
"Minute": 55,
"Month": 10,
"Second": 32,
"Ticks": 636749817326397744,
"TimeOfDay": {
"Ticks": 825326397744,
"Days": 0,
"Hours": 22,
"Milliseconds": 639,
"Minutes": 55,
"Seconds": 32,
"TotalDays": 0.95523888627777775,
"TotalHours": 22.925733270666665,
"TotalMilliseconds": 82532639.774400011,
"TotalMinutes": 1375.54399624,
"TotalSeconds": 82532.6397744
},
"Year": 2018
}
In dit voorbeeld wordt de ConvertTo-Json
cmdlet gebruikt om een System.DateTime-object te converteren van de Get-Date
cmdlet naar een tekenreeks met JSON-indeling. De opdracht gebruikt de Select-Object
cmdlet om alle (*
) eigenschappen van het object DateTime op te halen. De uitvoer toont de JSON-tekenreeks die ConvertTo-Json
is geretourneerd.
Voorbeeld 5
Get-Date | Select-Object -Property * | ConvertTo-Json | ConvertFrom-Json
DisplayHint : 2
DateTime : October 12, 2018 10:55:52 PM
Date : 2018-10-12 12:00:00 AM
Day : 12
DayOfWeek : 5
DayOfYear : 285
Hour : 22
Kind : 2
Millisecond : 768
Minute : 55
Month : 10
Second : 52
Ticks : 636749817527683372
TimeOfDay : @{Ticks=825527683372; Days=0; Hours=22; Milliseconds=768; Minutes=55; Seconds=52;
TotalDays=0.95547185575463; TotalHours=22.9313245381111; TotalMilliseconds=82552768.3372;
TotalMinutes=1375.87947228667; TotalSeconds=82552.7683372}
Year : 2018
In dit voorbeeld ziet u hoe u de ConvertTo-Json
cmdlets en ConvertFrom-Json
gebruikt om een object te converteren naar een JSON-tekenreeks en een JSON-object.
Parameters
-AsArray
Hiermee wordt het object tussen vierkante haken uitgevoerd, zelfs als de invoer één object is.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Compress
Hiermee worden witruimte en ingesprongen opmaak weggelaten in de uitvoertekenreeks.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Depth
Hiermee geeft u op hoeveel niveaus van ingesloten objecten zijn opgenomen in de JSON-weergave. De waarde kan een willekeurig getal van 0
tot zijn 100
. De standaardwaarde is 2
. ConvertTo-Json
geeft een waarschuwing als het aantal niveaus in een invoerobject dit aantal overschrijdt.
Type: | Int32 |
Position: | Named |
Default value: | 2 |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-EnumsAsStrings
Biedt een alternatieve serialisatieoptie waarmee alle opsommingen worden geconverteerd naar de tekenreeksweergave.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-EscapeHandling
Hiermee bepaalt u hoe bepaalde tekens worden ge escaped in de resulterende JSON-uitvoer. Standaard worden alleen besturingstekens (zoals newline) met een escape-teken weergegeven.
Acceptabele waarden zijn:
- Standaard: alleen besturingstekens krijgen een escape-teken.
- EscapeNonAscii: alle niet-ASCII- en besturingstekens worden met een escape-teken uitgevoerd.
- EscapeHtml : HTML-tekens (
<
,>
,&
,'
, )"
en besturingselementen worden met escape-tekens uitgevoerd.
Deze parameter is geïntroduceerd in PowerShell 6.2.
Type: | Newtonsoft.Json.StringEscapeHandling |
Position: | Named |
Default value: | Default |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Hiermee geeft u de objecten te converteren naar JSON-indeling. Voer een variabele in die de objecten bevat of typ een opdracht of expressie waarmee de objecten worden opgehaald. U kunt ook een object doorsnijden naar ConvertTo-Json
.
De parameter InputObject is vereist, maar de waarde kan null ($null
) of een lege tekenreeks zijn.
Wanneer het invoerobject is, ConvertTo-Json
retourneert $null
de JSON-weergave van null
. Wanneer het invoerobject een lege tekenreeks is, ConvertTo-Json
wordt de JSON-weergave van een lege tekenreeks geretourneerd.
Type: | Object |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Invoerwaarden
U kunt elk object doorsnijden naar deze cmdlet.
Uitvoerwaarden
Deze cmdlet retourneert een tekenreeks die het invoerobject vertegenwoordigt dat is geconverteerd naar een JSON-tekenreeks.
Notities
De ConvertTo-Json
cmdlet wordt geïmplementeerd met behulp van Newtonsoft Json.NET.