17

PowerShell で読み取りたい次のファイルがあります。

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

私の PowerShell v3 コード:

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

しかし、私は常にこのエラーが発生しています:

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

JSON コードを手動でコピーしてコードに貼り付けると、すべて正常に動作します。

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

5 に答える 5

34

Out-Stringに配管する前にに配管してみてくださいConvertFrom-Json

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

動作している例では、JSONコードは文字列ですが、動作していない例では行のコレクションが返されます。Out-Stringコレクションを単一の文字列に変換するためのパイピング。これは、InputObjectパラメーターが受け入れるものです。

于 2012-08-27T10:55:42.720 に答える
10

Get-Content -Rawまたは、JSON を単一の文字列として取得する which を使用することもできます。

詳細については、この投稿を参照してください: http://blogs.technet.com/b/heyscriptingguy/archive/2014/04/23/json-is-the-new-xml.aspx

于 2015-07-06T12:43:30.597 に答える