2012-08-27 3 views
13

ho questo file, che voglio leggere con PowerShell:"allineamento non valido passato" durante l'analisi JSON

var myMap = 
[ 
    { 
    "name": "JSON Example", 
    "attr": "Another attribute" 
    } 
] 

My Code PowerShell v3:

$str = Get-Content $file | Select -Skip 1; 
$str | ConvertFrom-Json; 

ma io sono sempre questo errore :

ConvertFrom-Json : Invalid array passed in, ']' expected. (1): [ 
At S:\ome\Path\script.ps1:60 char:8 
+ $str | ConvertFrom-Json; 
+  ~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : NotSpecified: (:) [ConvertFrom-Json], ArgumentException 
    + FullyQualifiedErrorId : System.ArgumentException,Microsoft.PowerShell.Commands.ConvertFromJsonCommand 

Se copio e incollo manualmente il codice JSON nel codice, tutto funziona bene:

'[ 
    { 
    "name": "JSON Example", 
    "attr": "Another attribute" 
    } 
]' | ConvertFrom-Json; 

risposta

24

Cercare di tubo per Out-String alla connessione a ConvertFrom-Json:

Get-Content $file | Select -Skip 1 | Out-String | ConvertFrom-Json 

Nel tuo esempio di lavoro il codice JSON è una stringa, mentre l'esempio non funzionante restituisce un insieme di linee. Piping to Out-String converte la raccolta in una singola stringa, che è ciò che accetta il parametro InputObject.

+0

ora funziona! Grazie per la spiegazione! Accetterò la tua risposta tra 4 minuti. – ComFreek

-1

un'altra risposta che funziona anche: usare GC -raw <FILE> che passerà come stringa