Delen via


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 $nullde 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

Object

U kunt elk object doorsnijden naar deze cmdlet.

Uitvoerwaarden

String

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.