Test-Json
文字列が有効な JSON ドキュメントであるかどうかをテストします
構文
JsonString (既定)
Test-Json
[-Json] <String>
[-Options <String[]>]
[<CommonParameters>]
JsonStringWithSchemaString
Test-Json
[-Json] <String>
[-Schema] <String>
[-Options <String[]>]
[<CommonParameters>]
JsonStringWithSchemaFile
Test-Json
[-Json] <String>
-SchemaFile <String>
[-Options <String[]>]
[<CommonParameters>]
JsonPath
Test-Json
-Path <String>
[-Options <String[]>]
[<CommonParameters>]
JsonPathWithSchemaString
Test-Json
[-Schema] <String>
-Path <String>
[-Options <String[]>]
[<CommonParameters>]
JsonPathWithSchemaFile
Test-Json
-Path <String>
-SchemaFile <String>
[-Options <String[]>]
[<CommonParameters>]
JsonLiteralPath
Test-Json
-LiteralPath <String>
[-Options <String[]>]
[<CommonParameters>]
JsonLiteralPathWithSchemaString
Test-Json
[-Schema] <String>
-LiteralPath <String>
[-Options <String[]>]
[<CommonParameters>]
JsonLiteralPathWithSchemaFile
Test-Json
-LiteralPath <String>
-SchemaFile <String>
[-Options <String[]>]
[<CommonParameters>]
説明
Test-Json
コマンドレットは、文字列が有効な JavaScript Object Notation (JSON) ドキュメントであるかどうかをテストし、必要に応じて、指定されたスキーマに対してその JSON ドキュメントを検証できます。
検証された文字列は、ConvertFrom-Json
コマンドレットで使用して、JSON 形式の文字列を JSON オブジェクトに変換できます。JSON オブジェクトは、PowerShell で簡単に管理できます。また、JSON 入力にアクセスする別のプログラムまたは Web サービスに送信することもできます。
多くの Web サイトでは、XML ではなく JSON を使用して、サーバーと Web ベースのアプリ間の通信用にデータをシリアル化します。
このコマンドレットは、PowerShell 6.1 で導入されました
例
例 1: オブジェクトが有効な JSON であるかどうかをテストする
この例では、入力文字列が有効な JSON ドキュメントであるかどうかをテストします。
'{"name": "Ashley", "age": 25}' | Test-Json
True
例 2: 指定されたスキーマに対してオブジェクトをテストする
この例では、JSON スキーマを含む文字列を受け取り、それを入力文字列と比較します。
$schema = @'
{
"definitions": {},
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "http://example.com/root.json",
"type": "object",
"title": "The Root Schema",
"required": [
"name",
"age"
],
"properties": {
"name": {
"$id": "#/properties/name",
"type": "string",
"title": "The Name Schema",
"default": "",
"examples": [
"Ashley"
],
"pattern": "^(.*)$"
},
"age": {
"$id": "#/properties/age",
"type": "integer",
"title": "The Age Schema",
"default": 0,
"examples": [
25
]
}
}
}
'@
'{"name": "Ashley", "age": "25"}' | Test-Json -Schema $schema -ErrorAction SilentlyContinue
False
この例では、 ErrorAction パラメーターを使用してエラー メッセージを抑制します。 このパラメーターを指定しないと、スキーマには 有効期間 の整数が必要ですが、テストした JSON 入力では代わりに文字列値が使用されるため、このコマンドもエラーを出力します。
詳細については、「JSON スキーマの をする」を参照してください。
例 3: ファイルのスキーマに対してオブジェクトをテストする
JSON スキーマでは、$ref
キーワードを使用して定義を参照できます。
$ref
は、別のファイルを参照する URI に解決できます。
SchemaFile パラメーターは、JSON スキーマ ファイルへのリテラル パスを受け入れ、そのようなスキーマに対して JSON ファイルを検証できるようにします。
この例では、schema.json
ファイルが definitions.json
参照しています。
Get-Content schema.json
{
"description":"A person",
"type":"object",
"properties":{
"name":{
"$ref":"definitions.json#/definitions/name"
},
"hobbies":{
"$ref":"definitions.json#/definitions/hobbies"
}
}
}
Get-Content definitions.json
{
"definitions":{
"name":{
"type":"string"
},
"hobbies":{
"type":"array",
"items":{
"type":"string"
}
}
}
}
'{"name": "James", "hobbies": [".NET", "Blogging"]}' | Test-Json -SchemaFile 'schema.json'
True
詳細については、「複雑なスキーマの構成」を参照してください。
パラメーター
-Json
有効性をテストする JSON 文字列を指定します。 文字列を含む変数を入力するか、文字列を取得するコマンドまたは式を入力します。 文字列を Test-Json
にパイプすることもできます。
Json パラメーターが必要です。
パラメーターのプロパティ
型: | String |
規定値: | None |
ワイルドカードのサポート: | False |
DontShow: | False |
パラメーター セット
JsonString
配置: | 0 |
必須: | True |
パイプラインからの値: | True |
プロパティ名別のパイプラインからの値: | False |
残りの引数からの値: | False |
JsonStringWithSchemaString
配置: | 0 |
必須: | True |
パイプラインからの値: | True |
プロパティ名別のパイプラインからの値: | False |
残りの引数からの値: | False |
JsonStringWithSchemaFile
配置: | 0 |
必須: | True |
パイプラインからの値: | True |
プロパティ名別のパイプラインからの値: | False |
残りの引数からの値: | False |
-LiteralPath
JSON ファイルへのパスを指定します。 LiteralPath の値は、入力されたとおりにそのまま使用されます。 ワイルドカードとして解釈される文字はありません。 パスにエスケープ文字が含まれている場合は、単一引用符で囲みます。 単一引用符は、エスケープ シーケンスとして文字を解釈しないように PowerShell に指示します。
このパラメーターは PowerShell 7.4 で追加されました。
パラメーターのプロパティ
型: | String |
規定値: | None |
ワイルドカードのサポート: | False |
DontShow: | False |
Aliases: | PSPath, LP |
パラメーター セット
JsonLiteralPath
配置: | 0 |
必須: | True |
パイプラインからの値: | False |
プロパティ名別のパイプラインからの値: | True |
残りの引数からの値: | False |
JsonLiteralPathWithSchemaString
配置: | 0 |
必須: | True |
パイプラインからの値: | False |
プロパティ名別のパイプラインからの値: | True |
残りの引数からの値: | False |
JsonLiteralPathWithSchemaFile
配置: | 0 |
必須: | True |
パイプラインからの値: | False |
プロパティ名別のパイプラインからの値: | True |
残りの引数からの値: | False |
-Options
既定では、Test-Json
はコメントまたは末尾のコンマを含む JSON をサポートしていません。 このパラメーターを使用すると、既定の動作を変更するオプションを指定できます。 次のオプションを使用できます。
IgnoreComments
AllowTrailingCommas
このパラメーターは、PowerShell 7.5.0-preview.4 で追加されました。
パラメーターのプロパティ
型: | String[] |
規定値: | None |
指定可能な値: | IgnoreComments, AllowTrailingCommas |
ワイルドカードのサポート: | False |
DontShow: | False |
パラメーター セット
(All)
配置: | Named |
必須: | False |
パイプラインからの値: | False |
プロパティ名別のパイプラインからの値: | False |
残りの引数からの値: | False |
-Path
JSON ファイルへのパスを指定します。 このコマンドレットは、指定した場所にある項目を取得します。 ワイルドカード文字は使用できますが、パターンは 1 つのファイルに解決する必要があります。
このパラメーターは PowerShell 7.4 で追加されました。
パラメーターのプロパティ
型: | String |
規定値: | None |
ワイルドカードのサポート: | True |
DontShow: | False |
パラメーター セット
JsonPath
配置: | 0 |
必須: | True |
パイプラインからの値: | False |
プロパティ名別のパイプラインからの値: | True |
残りの引数からの値: | False |
JsonPathWithSchemaString
配置: | 0 |
必須: | True |
パイプラインからの値: | False |
プロパティ名別のパイプラインからの値: | True |
残りの引数からの値: | False |
JsonPathWithSchemaFile
配置: | 0 |
必須: | True |
パイプラインからの値: | False |
プロパティ名別のパイプラインからの値: | True |
残りの引数からの値: | False |
-Schema
JSON 入力を検証するスキーマを指定します。 渡された場合、Test-Json
は、JSON 入力が Schema パラメーターで指定された仕様に準拠していることを検証し、入力が指定されたスキーマに準拠している場合にのみ $true
を返します。
詳細については、「JSON スキーマの をする」を参照してください。
パラメーターのプロパティ
型: | String |
規定値: | None |
ワイルドカードのサポート: | False |
DontShow: | False |
パラメーター セット
JsonStringWithSchemaString
配置: | 1 |
必須: | True |
パイプラインからの値: | False |
プロパティ名別のパイプラインからの値: | False |
残りの引数からの値: | False |
JsonLiteralPathWithSchemaString
配置: | 1 |
必須: | True |
パイプラインからの値: | False |
プロパティ名別のパイプラインからの値: | False |
残りの引数からの値: | False |
JsonPathWithSchemaString
配置: | 1 |
必須: | True |
パイプラインからの値: | False |
プロパティ名別のパイプラインからの値: | False |
残りの引数からの値: | False |
-SchemaFile
JSON 入力の検証に使用するスキーマ ファイルを指定します。 使用すると、Test-Json
は、JSON 入力が、$true
パラメーターで指定されたファイルで定義されているスキーマに準拠している場合にのみ、 を返します。
詳細については、「JSON スキーマの をする」を参照してください。
パラメーターのプロパティ
型: | String |
規定値: | None |
ワイルドカードのサポート: | False |
DontShow: | False |
パラメーター セット
JsonStringWithSchemaFile
配置: | 1 |
必須: | True |
パイプラインからの値: | False |
プロパティ名別のパイプラインからの値: | False |
残りの引数からの値: | False |
JsonLiteralPathWithSchemaFile
配置: | 1 |
必須: | True |
パイプラインからの値: | False |
プロパティ名別のパイプラインからの値: | False |
残りの引数からの値: | False |
JsonPathWithSchemaFile
配置: | 1 |
必須: | True |
パイプラインからの値: | False |
プロパティ名別のパイプラインからの値: | False |
残りの引数からの値: | False |
CommonParameters
このコマンドレットでは、一般的なパラメーター -Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction、-WarningVariable の各パラメーターがサポートされています。 詳細については、about_CommonParametersを参照してください。
入力
String
JSON 文字列をこのコマンドレットにパイプできます。
出力
Boolean
このコマンドレットは、JSON が有効な場合は $true
を返し、それ以外の場合は $false
。
メモ
PowerShell 6 以降、PowerShell は JSON 関数に Newtonsoft.Json アセンブリを使用します。 Newtonsoft の実装には、コメントのサポートや単一引用符の使用など、JSON 標準のいくつかの拡張機能が含まれています。 機能の完全な一覧については、https://www.newtonsoft.com/jsonの Newtonsoft のドキュメントを参照してください。
PowerShell 7.4 以降、Test-Json
では、スキーマ検証のために JSON の解析と JsonSchema.NETSystem.Text.Json が使用されています。
これらの変更により、次の Test-Json
。
- Draft 4 スキーマはサポートされなくなりました
- 厳密に準拠した JSON のみをサポートします
Newtonsoft.Json と System.Text.Json の違いの完全な一覧については、「Newtonsoft.Json から System.Text.Jsonへの移行」の 相違点の 表を参照してください。
JSON スキーマの仕様の詳細については、JSON-Schema.orgのドキュメントを参照してください。