다음을 통해 공유


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

Description

Test-Json cmdlet은 문자열이 유효한 JSON(JavaScript Object Notation) 문서인지 여부를 테스트하고 제공된 스키마에 대해 JSON 문서를 선택적으로 확인할 수 있습니다.

그런 다음 확인된 문자열을 ConvertFrom-Json cmdlet과 함께 사용하여 JSON 형식 문자열을 JSON 개체로 변환할 수 있습니다. 이 문자열은 PowerShell에서 쉽게 관리되거나 JSON 입력에 액세스하는 다른 프로그램 또는 웹 서비스로 전송됩니다.

많은 웹 사이트에서는 XML 대신 JSON을 사용하여 서버와 웹 기반 앱 간의 통신을 위해 데이터를 직렬화합니다.

이 cmdlet은 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:
Line |
  35 |  '{"name": "Ashley", "age": "25"}' | Test-Json -Schema $schema
     |                                      ~~~~~~~~~~~~~~~~~~~~~~~~~
     | IntegerExpected: #/age
False

이 예제에서는 스키마에 연령 정수가 예상되지만 테스트한 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
Default value:None
와일드카드 지원:False
DontShow:False

매개 변수 집합

(All)
Position:1
필수:True
파이프라인의 값:True
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-Schema

JSON 입력의 유효성을 검사할 스키마를 지정합니다. 전달된 경우 Test-Json JSON 입력이 스키마 매개 변수로 지정된 사양을 준수하는지 확인하고 입력이 제공된 스키마를 준수하는 경우에만 $true 반환합니다.

자세한 내용은 JSON 스키마 참조하세요.

매개 변수 속성

형식:String
Default value:None
와일드카드 지원:False
DontShow:False

매개 변수 집합

SchemaString
Position:2
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-SchemaFile

JSON 입력의 유효성을 검사하는 데 사용되는 스키마 파일을 지정합니다. 사용되는 경우 Test-Json JSON 입력이 $true 매개 변수로 지정된 파일에 정의된 스키마를 준수하는 경우에만 반환합니다.

자세한 내용은 JSON 스키마 참조하세요.

매개 변수 속성

형식:String
Default value:None
와일드카드 지원:False
DontShow:False

매개 변수 집합

SchemaFile
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

CommonParameters

이 cmdlet은 일반적인 매개 변수인 -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction 및 -WarningVariable 매개 변수를 지원합니다. 자세한 내용은 about_CommonParameters를 참조하세요.

입력

String

JSON 문자열을 이 cmdlet으로 파이프할 수 있습니다.

출력

Boolean

이 cmdlet은 JSON이 유효하고 그렇지 않으면 $true경우 $false 반환합니다.

참고

Test-Json cmdlet은 NJsonSchema 클래스를 사용하여 구현됩니다.

PowerShell 6부터 PowerShell은 모든 JSON 함수에 Newtonsoft.Json 어셈블리를 사용합니다. Newtonsoft의 구현에는 주석 지원 및 작은따옴표 사용과 같은 JSON 표준에 대한 여러 확장이 포함되어 있습니다. 기능의 전체 목록은 https://www.newtonsoft.com/jsonNewtonsoft 설명서를 참조하세요.