次の方法で共有


Test-Json

文字列が有効な JSON ドキュメントであるかどうかをテストします

構文

__AllParameterSets (既定)

Test-Json
    [-Json] <String>
    [<CommonParameters>]

SchemaString

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

SchemaFile

Test-Json
    [-Json] <String>
    [-SchemaFile <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
Test-Json : IntegerExpected: #/age
At line:1 char:37
+ "{'name': 'Ashley', 'age': '25'}" | Test-Json -Schema $schema
+                                     ~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidData: (:) [Test-Json], Exception
+ FullyQualifiedErrorId : InvalidJsonAgainstSchema,Microsoft.PowerShell.Commands.TestJsonCommand
False

この例では、スキーマが 有効期間 の整数を想定していますが、テストした JSON 入力では代わりに文字列値が使用されるため、エラーが発生します。

詳細については、「JSON スキーマの する」を参照してください。

例 3: ファイルのスキーマに対してオブジェクトをテストする

JSON スキーマでは、$ref キーワードを使用して定義を参照できます。 $ref は、別のファイルを参照する URI に解決できます。 SchemaFile パラメーターは、JSON スキーマ ファイルへのリテラル パスを受け入れ、そのようなスキーマに対して JSON ファイルを検証できるようにします。

この例では、definitions.jsonを参照するファイルschema.jsonがあります。

PS> Get-Content schema.json

{
  "description":"A person",
  "type":"object",
  "properties":{
    "name":{
      "$ref":"definitions.json#/definitions/name"
    },
    "hobbies":{
      "$ref":"definitions.json#/definitions/hobbies"
    }
  }
}

PS> 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

パラメーター セット

(All)
配置:1
必須:True
パイプラインからの値:True
プロパティ名別のパイプラインからの値:False
残りの引数からの値:False

-Schema

JSON 入力を検証するスキーマを指定します。 合格すると、 Test-Json JSON 入力が Schema パラメーターで指定された仕様に準拠していることを検証し、入力が指定されたスキーマに準拠している場合にのみ $true を返します。

詳細については、「JSON スキーマの する」を参照してください。

パラメーターのプロパティ

型:String
規定値:None
ワイルドカードのサポート:False
DontShow:False

パラメーター セット

SchemaString
配置:2
必須:False
パイプラインからの値:False
プロパティ名別のパイプラインからの値:False
残りの引数からの値:False

-SchemaFile

JSON 入力の検証に使用するスキーマ ファイルを指定します。 使用すると、Test-Json は、JSON 入力が、$true パラメーターで指定されたファイルで定義されているスキーマに準拠している場合にのみ、 を返します。

詳細については、「JSON スキーマの する」を参照してください。

パラメーターのプロパティ

型:String
規定値:None
ワイルドカードのサポート:False
DontShow:False

パラメーター セット

SchemaFile
配置:Named
必須:False
パイプラインからの値:False
プロパティ名別のパイプラインからの値:False
残りの引数からの値:False

CommonParameters

このコマンドレットでは、一般的なパラメーター -Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction、-WarningVariable の各パラメーターがサポートされています。 詳細については、about_CommonParametersを参照してください。

入力

String

JSON 文字列を Test-Jsonにパイプすることができます。

出力

Boolean

メモ

Test-Json コマンドレットは、NJsonSchema クラスを使用して実装されます。

PowerShell 6 以降、PowerShell ではすべての JSON 関数に Newtonsoft.Json アセンブリが使用されます。 Newtonsoft の実装には、コメントのサポートや単一引用符の使用など、JSON 標準のいくつかの拡張機能が含まれています。 機能の完全な一覧については、https://www.newtonsoft.com/jsonの Newtonsoft のドキュメントを参照してください。