ConvertTo-Json

Konverterar ett objekt till en JSON-formaterad sträng.

Syntax

ConvertTo-Json
              [-InputObject] <Object>
              [-Depth <Int32>]
              [-Compress]
              [-EnumsAsStrings]
              [-AsArray]
              [-EscapeHandling <StringEscapeHandling>]
              [<CommonParameters>]

Description

Cmdleten ConvertTo-Json konverterar alla .NET-objekt till en sträng i JSON-format (JavaScript Object Notation). Egenskaperna konverteras till fältnamn, fältvärdena konverteras till egenskapsvärden och metoderna tas bort.

Kommentar

Från och med PowerShell 7.2 serialiseras inte längre egenskaperna för Extended Type System för DateTime - och String-objekt och endast det enkla objektet konverteras till JSON-format

Du kan sedan använda cmdleten ConvertFrom-Json för att konvertera en JSON-formaterad sträng till ett JSON-objekt, som enkelt hanteras i PowerShell.

Många webbplatser använder JSON i stället för XML för att serialisera data för kommunikation mellan servrar och webbaserade appar.

Från och med PowerShell 7.1 ConvertTo-Json genererar en varning om djupet i indataobjektet överskrider det djup som angetts för kommandot. Detta förhindrar oönskad dataförlust vid konvertering av objekt.

Den här cmdleten introducerades i Windows PowerShell 3.0.

Exempel

Exempel 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
}

Det här kommandot använder cmdleten ConvertTo-Json för att konvertera ett GregorianCalendar-objekt till en JSON-formaterad sträng.

Exempel 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"
]

Det här exemplet visar utdata från ConvertTo-Json cmdleten med och utan växelparametern AsArray . Du kan se att den andra delen av utdata är omsluten inom matrisparenteser.

Exempel 3

@{Account="User01";Domain="Domain01";Admin="True"} | ConvertTo-Json -Compress

{"Domain":"Domain01","Account":"User01","Admin":"True"}

Det här kommandot visar effekten av att använda parametern Komprimera för ConvertTo-Json. Komprimering påverkar endast strängens utseende, inte dess giltighet.

Exempel 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
}

I det här exemplet används cmdleten ConvertTo-Json för att konvertera ett System.DateTime-objekt från cmdleten Get-Date till en JSON-formaterad sträng. Kommandot använder cmdleten Select-Object för att hämta alla (*) egenskaper för DateTime-objektet . Utdata visar JSON-strängen som ConvertTo-Json returnerades.

Exempel 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

Det här exemplet visar hur du använder ConvertTo-Json cmdletarna och ConvertFrom-Json för att konvertera ett objekt till en JSON-sträng och ett JSON-objekt.

Parametrar

-AsArray

Matar ut objektet inom matrisparenteser, även om indata är ett enda objekt.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Compress

Utelämnar tomt utrymme och indragen formatering i utdatasträngen.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Depth

Anger hur många nivåer av inneslutna objekt som ingår i JSON-representationen. Värdet kan vara valfritt tal från 0 till 100. Standardvärdet är 2. ConvertTo-Json genererar en varning om antalet nivåer i ett indataobjekt överskrider det här antalet.

Type:Int32
Position:Named
Default value:2
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-EnumsAsStrings

Tillhandahåller ett alternativt serialiseringsalternativ som konverterar alla uppräkningar till deras strängrepresentation.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-EscapeHandling

Styr hur vissa tecken är undantagna i de resulterande JSON-utdata. Som standard är endast kontrolltecken (som ny rad) undantagna.

Godtagbara värden är:

  • Standard – Endast kontrolltecken är undantagna.
  • EscapeNonAscii – Alla icke-ASCII- och kontrolltecken är undantagna.
  • EscapeHtml – HTML (<, >, &, ', ") och kontrolltecken är undantagna.

Den här parametern introducerades i PowerShell 6.2.

Type:Newtonsoft.Json.StringEscapeHandling
Position:Named
Default value:Default
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

Anger vilka objekt som ska konverteras till JSON-format. Ange en variabel som innehåller objekten eller skriv ett kommando eller uttryck som hämtar objekten. Du kan också skicka ett objekt till ConvertTo-Json.

Parametern InputObject krävs, men dess värde kan vara null ($null) eller en tom sträng. När indataobjektet är $nullreturnerar ConvertTo-Json JSON-representationen av null. När indataobjektet är en tom sträng ConvertTo-Json returnerar JSON-representationen av en tom sträng.

Type:Object
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

Indata

Object

Du kan skicka valfritt objekt till den här cmdleten.

Utdata

String

Den här cmdleten returnerar en sträng som representerar indataobjektet som konverterats till en JSON-sträng.

Kommentarer

Cmdleten ConvertTo-Json implementeras med Newtonsoft Json.NET.