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 입력에는 문자열 값이 대신 사용되므로 오류가 발생합니다.
예제 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 반환합니다.
매개 변수 속성
| 형식: | String |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
SchemaString
| Position: | 2 |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-SchemaFile
JSON 입력의 유효성을 검사하는 데 사용되는 스키마 파일을 지정합니다. 사용되는 경우 Test-Json JSON 입력이 $true 매개 변수로 지정된 파일에 정의된 스키마를 준수하는 경우에만 반환합니다.
매개 변수 속성
| 형식: | 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 설명서를 참조하세요.