[PowerShell 7] Test-Json を使用して JSON データとして有効かどうかを判断する

PowerShell Core PowerShell
PowerShell Core

ConvertTo-Json コマンドレット や ConvertFrom-Json コマンドレットを使用することで、JSON ファイルに変換したり、JSONデータを読み込む方法について説明をしました。

今回は、Test-Json コマンドレットを使用して、取り扱うデータが JSON データとして有効かどうをか判断する方法について説明をします。

Test-Json の書式

Test-Json の書式は以下の通りです。

Test-Json [-Json] <string> [[-Schema] <string>] [<CommonParameters>]

Test-Json で JSON データとして有効化を判断する

以下のように、$json 変数に JSON データが代入されているとします。

PS > $json = '{
>>   "Name": "HIRO",
>>   "Birthday": "1972/6/19",
>>   "Age": 47
>> }'

この $json を Test-Json を使用して確認をすると、以下のように True を返します。

True は、JSON データとして有効であることを示します。

PS > Test-Json $json
True

 

続いて False が返されるパターンについても確認をしてみましょう。

先ほどの $json を以下のように編集して、JSON としては無効なデータにしてみます(キーと値の間の「:」を削除しています)。

PS > $json = '{
>>   "Name" "HIRO",
>>   "Birthday" "1972/6/19",
>>   "Age" 47
>> }'

この $json を Test-Json を使用して確認をすると、以下のように エラーメッセージと False を返します。

PS > Test-Json $json
Test-Json: Cannot parse the JSON.
False

連想配列のデータが JSON ファイルに変換できるかを確認するには?

連想配列データが JSON データに変換可能かを確認する例を以下に示します。

連想配列そのものは JSON データではありませんので、一度 ConvertTo-Json を使用して JSON に変換し、パイプで Test-Json に渡してチェックをします。

PS > $json = @{Name="HIRO"; Age=47; Birthday="1972/6/19"} 
PS > ConvertTo-Json $json | Test-Json 
True

 

コメント

タイトルとURLをコピーしました