Come scrivere un oggetto JSON in un file in PowerShell

  1. Oggetti Personalizzati PowerShell
  2. Oggetto JSON PowerShell a Stringa JSON
  3. Salva la Stringa JSON in un File Utilizzando ConvertTo-Json e Out-File
  4. Salva la Stringa JSON in un File Utilizzando ConvertTo-Json e Set-Content
  5. Salva la Stringa JSON in un File Utilizzando ConvertTo-Json e Add-Content
  6. Conclusione
Come scrivere un oggetto JSON in un file in PowerShell

PowerShell, un linguaggio di scripting robusto e versatile, fornisce strumenti potenti per gestire e manipolare i dati. Quando si tratta di gestire i dati JSON (JavaScript Object Notation), PowerShell offre modi efficienti per convertire oggetti personalizzati in stringhe JSON e successivamente scriverle su file.

In questo articolo, ci addentreremo nel processo di conversione di oggetti PowerShell in stringhe JSON e nel salvataggio in file utilizzando vari cmdlet come ConvertTo-Json, Out-File, Set-Content e Add-Content.

Oggetti Personalizzati PowerShell

Il PSCustomObject è un elemento fondamentale in PowerShell utilizzato per definire oggetti personalizzati. Un oggetto personalizzato contiene tipicamente proprietà e i loro valori associati, fornendo un modo strutturato per organizzare i dati.

Oltre a creare oggetti personalizzati da zero, PowerShell è anche abile nella gestione e nel processamento di oggetti JSON in modo efficiente.

Creazione di un Oggetto Personalizzato JSON

Iniziamo esaminando come creare un oggetto personalizzato JSON utilizzando una struttura JSON di esempio. Memorizzeremo questa struttura JSON nella variabile $MyJsonVar.

$MyJsonVar = @"
 {
   "ExampleJson":{
     "Fruit1":{
       "Name":"Apple",
       "Price":"`$10.00"
     }
  }
 }
"@

Output:

Oggetti personalizzati PowerShell 1

In questo esempio, abbiamo definito una struttura JSON che rappresenta informazioni sui frutti.

Conversione di JSON in Oggetto Personalizzato PowerShell

Per convertire la rappresentazione JSON in un Oggetto Personalizzato PowerShell, utilizziamo il cmdlet ConvertFrom-JSON. Assegniamo il nuovo oggetto JSON alla variabile $MyJsonObject.

$MyJsonObject = $MyJsonVar | ConvertFrom-Json

Il cmdlet ConvertFrom-JSON trasforma la struttura JSON in un appropriato PSCustomObject.

Visualizzazione dell’Oggetto Personalizzato PowerShell Creato

Ora, visualizziamo il PSCustomObject appena creato, che corrisponde alla struttura JSON originale.

$MyJsonObject

Output:

PowerShell Oggetti Personalizzati 3

Questi comandi accedono e visualizzano le proprietà prezzo e nome del frutto definite nell’oggetto personalizzato. Quindi, è stato confermato che abbiamo ottenuto un appropriato oggetto personalizzato PowerShell chiamato $MyJsonObject.

Oggetto JSON PowerShell a Stringa JSON

PowerShell offre il cmdlet ConvertTo-Json, uno strumento prezioso per convertire un oggetto personalizzato esistente in una stringa JSON. Questo processo trasforma efficacemente l’oggetto in una rappresentazione in testo semplice in formato JSON, che può essere ulteriormente utilizzata o archiviata secondo necessità.

Sintassi del cmdlet ConvertTo-Json:

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

Il cmdlet ConvertTo-Json fornisce diversi parametri facoltativi per personalizzare il processo di conversione JSON. Ecco una suddivisione di questi parametri:

  • -InputObject: Questo parametro è fondamentale, poiché designa l’oggetto personalizzato che necessita di conversione in una stringa JSON. Puoi passare direttamente l’oggetto a questo parametro.

  • -Depth: Questo parametro cruciale ti consente di specificare il numero di livelli nella stringa JSON risultante. La profondità indica quanti livelli di oggetti o array annidati saranno inclusi nella stringa JSON.

    Tuttavia, deve essere usato con giudizio, poiché un uso improprio può portare a perdita di dati. Il valore predefinito è impostato su 2.

  • -Compress: Questo parametro comprime l’output JSON rimuovendo spazi bianchi e indentazioni non necessarie, risultando in una stringa JSON più compatta.

  • -EnumsAsStrings: Quando utilizzato, questo parametro rappresenta i valori di enumerazione come stringhe nell’output JSON, garantendo compatibilità con i sistemi che potrebbero non gestire bene le enumerazioni numeriche.

  • -AsArray: Quando specificato, questo parametro formatta l’output come un array JSON, anche se l’oggetto di input non è un array.

  • -EscapeHandling: Questo parametro consente di personalizzare come i caratteri speciali vengono escapati nella stringa JSON, fornendo opzioni come Default, EscapeNonAscii, EscapeHtml, e DoNotEscape.

Per dimostrare l’uso del cmdlet ConvertTo-Json, consideriamo l’oggetto personalizzato nella sezione precedente ($MyJsonObject):

Possiamo inviare un oggetto personalizzato al cmdlet ConvertTo-Json facilmente. Possiamo passare $MyJsonObject attraverso la pipe (|) per trasformare l’oggetto personalizzato in una stringa JSON.

$MyJsonObject | ConvertTo-Json

Output:

Oggetto JSON in Stringa JSON

Dimostriamo ulteriormente l’uso del cmdlet ConvertTo-Json. Consideriamo un oggetto personalizzato chiamato $AnotherJsonObject:

$AnotherJsonObject = @{
    Name     = "John Doe"
    Age      = 30
    IsActive = $true
    Hobbies  = @("Reading", "Gardening")
    Address  = @{
        Street  = "1234 Elm St"
        City    = "Anytown"
        Country = "USA"
    }
}

Per convertire questo oggetto in una stringa JSON e visualizzare l’output, utilizza il seguente comando:

$AnotherJsonObject | ConvertTo-Json

L’output di questa trasformazione è una stringa JSON illustrativa che rappresenta l’oggetto personalizzato originale.

{
    "Name": "John Doe",
    "Age": 30,
    "IsActive": true,
    "Hobbies": [
        "Reading",
        "Gardening"
    ],
    "Address": {
        "Street": "1234 Elm St",
        "City": "Anytown",
        "Country": "USA"
    }
}

Come possiamo vedere, l’output mostra un oggetto strutturato ($AnotherJsonObject) che rappresenta informazioni personali come nome, età, stato dell’attività, hobby e dettagli dell’indirizzo di una persona.

Salva la Stringa JSON in un File Utilizzando ConvertTo-Json e Out-File

Una volta ottenuta una stringa JSON utilizzando il cmdlet ConvertTo-Json in PowerShell, il passo logico successivo è salvarla in un file per un uso successivo o per la condivisione. Fortunatamente, PowerShell fornisce diversi metodi per farlo, uno dei più semplici è l’uso di Out-File.

Il cmdlet Out-File è uno strumento affidabile per salvare la stringa JSON in un file. Di seguito è riportato un esempio che illustra come raggiungere questo obiettivo:

$MyJsonObject | ConvertTo-Json | Out-File -FilePath "D:\path\to\example.json"

Output:

Salvando la stringa JSON in un file

In questo esempio, $MyJsonObject rappresenta la variabile contenente la stringa JSON generata utilizzando ConvertTo-Json. La pipeline (|) quindi passa questa stringa JSON a Out-File per scriverla in un file.

Il parametro -FilePath specifica il percorso di destinazione per la stringa JSON. Sostituisci semplicemente "D:\path\to\example.json" con il percorso di file desiderato in cui intendi salvare il contenuto JSON.

Utilizzando Out-File in questo modo, pomfi efficacemente i tuoi dati JSON in un file, rendendoli accessibili per un uso futuro o per la condivisione. Questa tecnica semplice ma potente è strumentale nella gestione efficace dei dati JSON all’interno di un ambiente PowerShell.

Salva la Stringa JSON in un File Utilizzando ConvertTo-Json e Set-Content

Un altro modo per salvare la stringa JSON in un file è utilizzare il cmdlet Set-Content. Il cmdlet Set-Content offre un modo diretto per scrivere dati in un file, rendendolo una scelta adatta per salvare una stringa JSON su disco.

Il seguente esempio dimostra questo processo:

$MyJsonObject | ConvertTo-Json | Set-Content -Path "D:\path\to\example.json"

In questo esempio, $MyJsonObject è la variabile contenente la stringa JSON generata utilizzando ConvertTo-Json. La pipeline (|) passa questa stringa JSON a Set-Content per scriverla in un file.

Il parametro -Path specifica il percorso di destinazione per la stringa JSON. Sostituisci semplicemente "D:\path\to\example.json" con il percorso di file desiderato in cui intendi salvare il contenuto JSON.

Salva la Stringa JSON in un File Utilizzando ConvertTo-Json e Add-Content

Un altro metodo che possiamo utilizzare per salvare una stringa JSON in un file in PowerShell è il cmdlet Add-Content, che consente di aggiungere la stringa JSON a un file esistente. Il seguente esempio dimostra come raggiungere questo obiettivo:

$MyJsonObject | ConvertTo-Json | Add-Content -Path "D:\path\to\example.json"

In questo esempio, $MyJsonObject rappresenta la variabile contenente la stringa JSON generata utilizzando ConvertTo-Json. La pipeline (|) passa questa stringa JSON a Add-Content per aggiungerla a un file specificato dal parametro -Path.

Il parametro -Path indica il file a cui la stringa JSON sarà aggiunta. Sostituisci semplicemente "D:\path\to\example.json" con il percorso di file desiderato in cui intendi aggiungere il contenuto JSON.

Il cmdlet Add-Content offre un modo conveniente per aggiungere o appendere contenuti a un file senza sovrascrivere i dati esistenti. Questo è particolarmente utile quando si trattano stringhe JSON che devono essere aggiornate o estese nel tempo.

Conclusione

Quest’articolo ha dimostrato il processo di conversione di oggetti PowerShell in stringhe JSON e il salvataggio in file utilizzando il cmdlet ConvertTo-Json, insieme ad altri cmdlet per la gestione dei file come Out-File, Set-Content e Add-Content.

Sfruttando questi strumenti, gli utenti possono gestire i dati JSON in modo efficiente, consentendo una gestione dei dati semplificata, la condivisione e l’integrazione con diverse applicazioni e sistemi.

Ti piacciono i nostri tutorial? Iscriviti a DelftStack su YouTube per aiutarci a creare altre guide video di alta qualità. Iscriviti
Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.

Articolo correlato - PowerShell JSON