Megosztás a következőn keresztül:


ConvertFrom-Json

JSON formátumú sztringet alakít át egyéni objektummá vagy kivonattáblává.

Syntax

Default (Alapértelmezett)

ConvertFrom-Json
    [-InputObject] <String>
    [-AsHashtable]
    [-Depth <Int32>]
    [-NoEnumerate]
    [<CommonParameters>]

Description

A ConvertFrom-Json parancsmag egy JavaScript Object Notation (JSON) formátumú sztringet alakít át egyéni PSCustomObject objektummá, amely a JSON-sztring minden mezőjéhez rendelkezik tulajdonsággal. A JSON-t gyakran használják a webhelyek az objektumok szöveges ábrázolására. A JSON szabvány nem tiltja a PSCustomObjectáltal tiltott használatot. Ha például a JSON-sztring ismétlődő kulcsokat tartalmaz, a parancsmag csak az utolsó kulcsot használja. Lásd az alábbi példákat.

Ha JSON-sztringet szeretne létrehozni bármely objektumból, használja a ConvertTo-Json parancsmagot.

Ezt a parancsmagot a PowerShell 3.0-ban vezettük be.

Megjegyzés:

A PowerShell 6-tól kezdődően ez a parancsmag támogatja a JSON-t megjegyzésekkel. Az elfogadott megjegyzések két perjellel ()// kezdődnek. A megjegyzés nem jelenik meg az adatokban, és az adatok sérülése vagy hiba bedobása nélkül írható a fájlba, mint a PowerShell 5.1-ben.

Példák

1. példa: DateTime-objektum átalakítása JSON-objektummá

Ez a parancs a ConvertTo-Json és ConvertFrom-Json cmdletek segítségével először egy cmdletból származó Get-Date objektumot JSON-objektummá, majd egy PSCustomObject-vé konvertál.

Get-Date | Select-Object -Property * | ConvertTo-Json | ConvertFrom-Json
DisplayHint : 2
DateTime    : Friday, January 13, 2012 8:06:31 PM
Date        : 1/13/2012 8:00:00 AM
Day         : 13
DayOfWeek   : 5
DayOfYear   : 13
Hour        : 20
Kind        : 2
Millisecond : 400
Minute      : 6
Month       : 1
Second      : 31
Ticks       : 634620819914009002
TimeOfDay   : @{Ticks=723914009002; Days=0; Hours=20; Milliseconds=400; Minutes=6; Seconds=31; TotalDays=0.83786343634490734; TotalHours=20.108722472277776; TotalMilliseconds=72391400.900200009; TotalMinutes=1206.5233483366667;TotalSeconds=72391.4009002}
Year        : 2012

A példa a Select-Object parancsmaggal lekéri a DateTime objektum összes tulajdonságát. A ConvertTo-Json parancsmaggal konvertálja a DateTime objektumot JSON-objektumként formázott sztringgé, a ConvertFrom-Json parancsmag pedig a JSON-formátumú sztringet PSCustomObject objektummá alakítja.

2. példa: JSON-sztringek lekérése egy webszolgáltatásból, és powerShell-objektumokká alakítása

Ez a parancs a Invoke-WebRequest parancsmaggal lekéri a JSON-sztringeket egy webszolgáltatásból, majd a ConvertFrom-Json parancsmaggal konvertálja a JSON-tartalmat a PowerShellben kezelhető objektumokká.

# Ensures that Invoke-WebRequest uses TLS 1.2
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$j = Invoke-WebRequest 'https://api.github.com/repos/PowerShell/PowerShell/issues' | ConvertFrom-Json

Használhatja a Invoke-RestMethod parancsmagot is, amely automatikusan objektummá alakítja a JSON-tartalmat.

3. példa: JSON-sztring átalakítása egyéni objektummá

Ez a példa bemutatja, hogyan konvertálhat JSON-fájlokat egyéni PowerShell-objektummá a ConvertFrom-Json parancsmaggal.

Get-Content JsonFile.JSON | ConvertFrom-Json

A parancs a Get-Content parancsmagot használja, hogy kinyerje a sztringeket egy JSON-fájlban. Ezután a folyamatkezelővel elküldi a tagolt sztringet a ConvertFrom-Json parancsmagnak, amely egyéni objektummá alakítja.

4. példa: JSON-sztring konvertálása kivonattáblává

Ez a parancs egy példát mutat be, ahol a -AsHashtable kapcsoló leküzdheti a parancs korlátait.

'{ "key":"value1", "Key":"value2" }' | ConvertFrom-Json -AsHashtable

A JSON-sztring két kulcsértékpárt tartalmaz, amelyek kulcsai csak a burkolatban különböznek. A kapcsoló nélkül a parancs hibát jelzett volna.

5. példa: Egyetlen elemtömb körbejárása

Ez a parancs egy példát mutat be, ahol a -NoEnumerate kapcsolóval egyetlen elemből álló JSON-tömböt lehet kerekíteni.

Write-Output "With -NoEnumerate: $('[1]' | ConvertFrom-Json -NoEnumerate | ConvertTo-Json -Compress)"
Write-Output "Without -NoEnumerate: $('[1]' | ConvertFrom-Json | ConvertTo-Json -Compress)"
With -NoEnumerate: [1]
Without -NoEnumerate: 1

A JSON-sztring egyetlen elemet tartalmazó tömböt tartalmaz. A kapcsoló nélkül a JSON psObjectre konvertálása, majd a ConvertTo-Json paranccsal való visszaalakítása egyetlen egész számot eredményez.

Paraméterek

-AsHashtable

A JSON-t kivonattábla-objektummá alakítja. Ezt a kapcsolót a PowerShell 6.0-ban vezettük be. Több forgatókönyv is létezik, amelyekben a ConvertFrom-Json parancsmag bizonyos korlátait leküzdheti.

  • Ha a JSON olyan kulcsokat tartalmazó listát tartalmaz, amelyek csak kis- és nagybetűkben különböznek egymástól. A kapcsoló nélkül ezeket a kulcsokat azonos kulcsoknak tekintenék, ezért csak az utolsót használnák.
  • Ha a JSON üres sztringet tartalmaz. A kapcsoló nélkül a parancsmag hibát jelezne, mivel az a PSCustomObject nem teszi lehetővé, de a kivonattábla igen. Példa project.lock.json erre a fájlokra.
  • A kivonattáblák gyorsabban feldolgozhatók bizonyos adatstruktúrák esetében.

Paramétertulajdonságok

Típus:SwitchParameter
Alapértelmezett érték:False
Támogatja a helyettesítő karaktereket:False
DontShow:False

Paraméterkészletek

(All)
Position:Named
Kötelező:False
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték:False

-Depth

Lekéri vagy beállítja a JSON-bemenet megengedett legnagyobb mélységét. Alapértelmezés szerint 1024.

Ez a paraméter a PowerShell 6.2-ben lett bevezetve.

Paramétertulajdonságok

Típus:Int32
Alapértelmezett érték:None
Támogatja a helyettesítő karaktereket:False
DontShow:False

Paraméterkészletek

(All)
Position:Named
Kötelező:False
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték:False

-InputObject

Megadja a JSON-objektumokká konvertálandó JSON-sztringeket. Adjon meg egy változót, amely tartalmazza a sztringet, vagy írjon be egy parancsot vagy kifejezést, amely lekéri a sztringet. Karakterláncot is továbbíthat a ConvertFrom-Json-ra.

Az InputObject paraméter megadása kötelező, de értéke lehet üres sztring. Ha a bemeneti objektum üres sztring, ConvertFrom-Json nem hoz létre kimenetet. Az InputObject értéke nem $null.

Paramétertulajdonságok

Típus:String
Alapértelmezett érték:None
Támogatja a helyettesítő karaktereket:False
DontShow:False

Paraméterkészletek

(All)
Position:0
Kötelező:True
Folyamatból származó érték:True
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték:False

-NoEnumerate

Megadja, hogy a kimenet ne legyen felsorolva.

A paraméter beállítása esetén a tömbök egyetlen objektumként lesznek elküldve ahelyett, hogy minden elemet külön küldenek. Ez garantálja, hogy a JSON-t ConvertTo-Json-on keresztül körbe lehessen alakítani.

Paramétertulajdonságok

Típus:SwitchParameter
Alapértelmezett érték:False
Támogatja a helyettesítő karaktereket:False
DontShow:False

Paraméterkészletek

(All)
Position:Named
Kötelező:False
Folyamatból származó érték:False
Folyamatból származó érték tulajdonságnév alapján:False
Fennmaradó argumentumokból származó érték:False

CommonParameters

Ez a parancsmag a következő gyakori paramétereket támogatja: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction és -WarningVariable. További információért lásd about_CommonParameters.

Bevitelek

String

Küldhetsz egy JSON-sztringet a ConvertFrom-Json-ba.

Kimenetek

PSCustomObject

Hashtable

Jegyzetek

Ez a parancsmag a Newtonsoft Json.NET használatával lett implementálva.

A PowerShell 6-tól kezdődően a ConvertTo-Json megpróbálja az időbélyegként formázott karakterláncokat DateTime értékekké konvertálni. A konvertált érték egy [datetime] példány, amelynek Kind tulajdonsága az alábbiak szerint van beállítva:

  • Unspecified, ha nincs időzóna-információ a bemeneti sztringben.
  • Utc, ha az időzóna adatai a végén található Z.
  • Local, ha az időzóna adatai záró UTC-ként vannak megadva, eltolás, például +02:00. Az időeltolódást megfelelően átalakították a hívó által konfigurált időzónára. Az alapértelmezett kimeneti formázás nem jelzi az eredeti időzóna-eltolást.