ConvertTo-Json
Converteert een object naar een tekenreeks met JSON-indeling.
Syntaxis
ConvertTo-Json
[-InputObject] <Object>
[-Depth <Int32>]
[-Compress]
[-EnumsAsStrings]
[-AsArray]
[-EscapeHandling <StringEscapeHandling>]
[<CommonParameters>]
Description
Met de ConvertTo-Json
cmdlet wordt een .NET-object geconverteerd 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 uitgebreide systeemeigenschappen van datum/tijd - en tekenreeksobjecten niet meer geserialiseerd en wordt alleen het eenvoudige object geconverteerd naar JSON-indeling
Vervolgens kunt u de ConvertFrom-Json
cmdlet gebruiken om een tekenreeks met JSON-indeling te converteren naar een JSON-object, dat eenvoudig wordt 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 opgegeven diepte voor de opdracht overschrijdt. Dit voorkomt ongewenst gegevensverlies bij het converteren van objecten.
Vanaf PowerShell 7.5-preview.3 ConvertTo-Json
kunnen BigInteger-waarden worden geserialiseerd als onbewerkte JSON-getallen.
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
}
Met deze opdracht wordt de ConvertTo-Json
cmdlet gebruikt 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 parameter AsArray-switch . U kunt zien dat het tweede gedeelte van de uitvoer tussen vierkante haken van matrices is verpakt.
Voorbeeld 3
@{Account="User01";Domain="Domain01";Admin="True"} | ConvertTo-Json -Compress
{"Domain":"Domain01","Account":"User01","Admin":"True"}
Met deze opdracht wordt het effect weergegeven van het gebruik van de parameter Comprimeren van ConvertTo-Json
. De compressie is alleen van 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 van de Get-Date
cmdlet te converteren naar een tekenreeks met JSON-indeling. De opdracht gebruikt de Select-Object
cmdlet om alle (*
) eigenschappen van het DateTime-object 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
en ConvertFrom-Json
cmdlets gebruikt om een object te converteren naar een JSON-tekenreeks en een JSON-object.
Parameters
-AsArray
Hiermee wordt het object uitgevoerd tussen matrices, zelfs als de invoer één object is.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-Compress
Hiermee wordt witruimte en ingesprongen opmaak weggelaten in de uitvoertekenreeks.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-Depth
Hiermee geeft u op hoeveel niveaus van ingesloten objecten worden opgenomen in de JSON-weergave. De waarde kan een willekeurig getal van 0
tot 100
. De standaardwaarde is 2
. ConvertTo-Json
verzendt een waarschuwing als het aantal niveaus in een invoerobject dit aantal overschrijdt.
Type: | Int32 |
Position: | Named |
Default value: | 2 |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-EnumsAsStrings
Biedt een alternatieve serialisatieoptie waarmee alle opsommingen worden geconverteerd naar de tekenreeksweergave.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-EscapeHandling
Hiermee bepaalt u hoe bepaalde tekens worden ontsnapt in de resulterende JSON-uitvoer. Standaard worden alleen besturingstekens (zoals nieuwe regel) geactiveerd.
Acceptabele waarden zijn:
- Standaard: alleen besturingstekens worden ontsnapt.
- EscapeNonAscii - Alle niet-ASCII- en besturingstekens worden ontsnapt.
- EscapeHtml - HTML (
<
,>
,&
,'
, )"
en besturingstekens worden ontsnapt.
Deze parameter is geïntroduceerd in PowerShell 6.2.
Type: | Newtonsoft.Json.StringEscapeHandling |
Position: | Named |
Default value: | Default |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-InputObject
Hiermee geeft u de objecten die moeten worden geconverteerd 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 doorsluisen naar ConvertTo-Json
.
De parameter InputObject is vereist, maar de waarde kan null ($null
) of een lege tekenreeks zijn.
Wanneer het invoerobject is $null
, ConvertTo-Json
wordt 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 |
Vereist: | True |
Pijplijninvoer accepteren: | True |
Jokertekens accepteren: | False |
Invoerwaarden
U kunt elk object doorsluisen naar deze cmdlet.
Uitvoerwaarden
Met deze cmdlet wordt een tekenreeks geretourneerd die het invoerobject vertegenwoordigt dat is geconverteerd naar een JSON-tekenreeks.
Notities
De ConvertTo-Json
cmdlet wordt geïmplementeerd met Newtonsoft Json.NET.