2012-08-27 21 views
13

tengo este archivo, que quiero leer con PowerShell:"matriz no válida pasa" al analizar JSON

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

Mi Código PowerShell v3:

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

Pero siempre estoy recibiendo este error :

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 

Si puedo copiar y pegar el código JSON manualmente en el código, todo está funcionando bien:

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

Respuesta

24

Tratar de tubería para Out-String antes del conexionado a ConvertFrom-Json:

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

En el ejemplo de trabajo el código JSON es una cadena, mientras que el ejemplo no trabajar devuelve una colección de líneas. Tubería a Out-String convierte la colección en una sola cadena, que es lo que acepta el parámetro InputObject.

+0

funciona ahora! ¡Gracias por la explicación! Aceptaré tu respuesta en 4 minutos. – ComFreek

-1

otra respuesta que también funciona: utilizar GC -raw <FILE> que pasará en como cadena

Cuestiones relacionadas