Delen via


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.

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

Object

U kunt elk object doorsluisen naar deze cmdlet.

Uitvoerwaarden

String

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.