15

ファイルを読み取り、それが有効な JSON ファイルである場合は「true」を出力する powershell スクリプトを作成しようとしています。私はPowershell v3.0を使用していますが、これは私が今持っているものです:

$text = Get-Content .\filename.txt -Raw 
$powershellRepresentation = $text | ConvertFrom-Json

戻りコードを確認するにはどうすればよいですか? 私はこのようなものが欲しいということです:

if(file not a JSON file){
 Write-Host "not JSON"
}
else{
 Write-Host "True"
}
4

4 に答える 4

17

UPDATE 2021: PowerShell 6 以降のバージョン

PowerShell 6 では、まったく新しいTest-Jsonコマンドレットが提供されます。ここに参照があります

Test-Json生のファイル コンテンツをコマンドレットに直接渡すだけです。

$text = Get-Content .\filename.txt -Raw

if ($text | Test-Json) {
    $powershellRepresentation = ConvertFrom-Json $text -ErrorAction Stop;
    Write-Host "Provided text has been correctly parsed to JSON";
} else {
    Write-Host "Provided text is not a valid JSON string";
}

PowerShell 5 以前のバージョン

Test-Jsonこれらのバージョンにはコマンドレットがないため、コマンドレットをブロックConvertFrom-Json内に配置するのが最善の方法ですtry ... catch

try {
    $powershellRepresentation = ConvertFrom-Json $text -ErrorAction Stop;
    $validJson = $true;
} catch {
    $validJson = $false;
}

if ($validJson) {
    Write-Host "Provided text has been correctly parsed to JSON";
} else {
    Write-Host "Provided text is not a valid JSON string";
}
于 2013-06-18T13:54:32.080 に答える