Ce face ConvertFrom-Json
ConvertFrom-Json primește un șir JSON și întoarce un PSCustomObject cu câte o proprietate pentru fiecare cheie; obiectele imbricate devin tot obiecte, iar tablourile devin tablouri. Un tablou JSON de obiecte iese ca obiecte separate în pipeline, deci le poți filtra direct cu Where-Object.
Un fișier JSON se citește cu Get-Content -Raw, ca să ajungă la cmdlet ca un singur șir. Din PowerShell 6 sunt acceptate comentariile în JSON, iar textele care arată ca o dată calendaristică sunt convertite la DateTime; din 7.5, -DateKind controlează această conversie (String le păstrează ca text).
-AsHashtable (din PowerShell 6.0) întoarce un hashtable în locul obiectului; din 7.3 este un OrderedHashtable, care păstrează ordinea cheilor. E util pentru chei care diferă doar prin majuscule sau pentru chei goale, pe care un obiect nu le poate avea. -Depth (din 6.2) limitează adâncimea acceptată, implicit 1024.
Parametri
| Parametru | Descriere |
|---|---|
-InputObject |
Textul JSON; de obicei vine prin pipeline. |
-AsHashtable |
Întoarce un hashtable (ordonat din 7.3) în loc de PSCustomObject (PowerShell 6.0+). |
-Depth |
Adâncimea maximă permisă a JSON-ului; implicit 1024 (PowerShell 6.2+). |
-NoEnumerate |
Trimite un tablou JSON ca un singur obiect, fără să-l desfacă în elemente. |
-DateKind |
Cum se convertesc datele: Default, Local, Utc, Offset, String (PowerShell 7.5+). |
Ce returnează
Obiecte PSCustomObject sau, cu -AsHashtable, un OrderedHashtable.
Exemple
Exemplul 1: Citirea câmpurilor dintr-un JSON
După conversie, cheile JSON sunt proprietăți obișnuite.
$json = '{ "Nume": "Ana", "Oras": "Iași", "Note": [9, 10, 8] }'
$elev = $json | ConvertFrom-Json
$elev.Nume
$elev.Note.Count
Ieșire în terminal
Ana
3
Exemplul 2: Un fișier JSON cu o listă de comenzi
-Raw citește tot fișierul ca un singur șir; fiecare element din tablou devine un obiect.
Set-Content -Path .\comenzi.json -Value '[{"Client":"Ana","Total":120},{"Client":"Mihai","Total":75}]'
$comenzi = Get-Content -Path .\comenzi.json -Raw | ConvertFrom-Json
$comenzi
($comenzi | Measure-Object -Property Total -Sum).Sum
Ieșire în terminal
Client Total
------ -----
Ana 120
Mihai 75
195
Exemplul 3: -AsHashtable pentru configurări
Din PowerShell 7.3 hashtable-ul este ordonat; valorile numerice rămân numere.
$config = '{ "server": "exemplu.ro", "port": 8080 }' | ConvertFrom-Json -AsHashtable
$config.GetType().Name
$config['port'] + 1
Ieșire în terminal
OrderedHashtable
8081
Greșeli frecvente
- Chei care diferă doar prin majuscule (
"key"și"Key"): fără-AsHashtablenu pot exista ca proprietăți separate. Folosește-AsHashtable. - Cu
-AsHashtablecheile țin cont de majuscule (de aceea pot coexistakeyșiKey):$config['Port']nu găsește cheiaport. Pe unPSCustomObject,$elev.numeși$elev.Numesunt aceeași proprietate. - Texte ca
"2026-10-25T10:00:00"devin automatDateTimeîn PowerShell 7; dacă ai nevoie de textul original, folosește-DateKind String(7.5+). -AsHashtableși-Depthnu există în Windows PowerShell 5.1.
Comenzi înrudite
ConvertTo-Json: Transformă obiecte PowerShell într-un șir JSON, de exemplu pentru un fișier de configurare sau corpul unei cereri către un API.Hashtable (@{}): Un hashtable ține perechi cheie-valoare; [ordered] păstrează ordinea cheilor, iar [pscustomobject] transformă perechile într-un obiect.Invoke-RestMethod: Apelează un API REST și transformă automat răspunsul JSON sau XML în obiecte PowerShell, gata de filtrat și afișat.Get-Content: Citește conținutul unui fișier ca listă de linii (sau ca un singur șir cu -Raw); poate afișa primele sau ultimele linii și urmări un log.Where-Object: Filtrează obiectele din pipeline și le lasă să treacă doar pe cele care îndeplinesc o condiție.