2012-08-27 32 views
13

Tôi có tập tin này mà tôi muốn đọc với PowerShell:"mảng không hợp lệ thông qua" khi phân tích cú pháp JSON

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

My Mã PowerShell v3:

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

Nhưng tôi luôn nhận được lỗi này :

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 

Nếu tôi sao chép và dán mã JSON bằng tay vào mã này, tất cả mọi thứ đang làm việc tốt:

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

Trả lời

24

Cố gắng ống để Out-String trước ống để ConvertFrom-Json:

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

Trong ví dụ làm việc của bạn mã JSON là một chuỗi trong khi không làm việc ví dụ trả về một bộ sưu tập các dòng. Đường ống để Out-String chuyển đổi bộ sưu tập thành một chuỗi duy nhất, đó là thông số InputObject chấp nhận.

+0

Nó hoạt động bây giờ! Cảm ơn lời giải thích! Tôi sẽ chấp nhận câu trả lời của bạn trong 4 phút. – ComFreek

-1

một câu trả lời mà cũng làm việc: sử dụng GC -raw <FILE> mà sẽ vượt qua trong như chuỗi

Các vấn đề liên quan