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>]
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 -ErrorAction SilentlyContinue
False
이 예제에서는 ErrorAction 매개 변수를 사용하여 오류 메시지를 표시하지 않습니다. 이 매개 변수가 없으면 스키마에 기간 동안 정수가 예상되지만 테스트한 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 |
매개 변수 집합
JsonString
| Position: | 0 |
| 필수: | True |
| 파이프라인의 값: | True |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
JsonStringWithSchemaString
| Position: | 0 |
| 필수: | True |
| 파이프라인의 값: | True |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
JsonStringWithSchemaFile
| Position: | 0 |
| 필수: | True |
| 파이프라인의 값: | True |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-LiteralPath
JSON 파일의 경로를 지정합니다. LiteralPath 값은 입력된 대로 정확하게 사용됩니다. 와일드카드로 해석되는 문자는 없습니다. 경로에 이스케이프 문자가 포함된 경우 작은따옴표로 묶습니다. 작은따옴표는 PowerShell에 문자를 이스케이프 시퀀스로 해석하지 않도록 지시합니다.
이 매개 변수는 PowerShell 7.4에 추가되었습니다.
매개 변수 속성
| 형식: | String |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
| 별칭: | PSPath, Lp 로 |
매개 변수 집합
JsonLiteralPath
| Position: | 0 |
| 필수: | True |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | True |
| 나머지 인수의 값: | False |
JsonLiteralPathWithSchemaString
| Position: | 0 |
| 필수: | True |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | True |
| 나머지 인수의 값: | False |
JsonLiteralPathWithSchemaFile
| Position: | 0 |
| 필수: | True |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | True |
| 나머지 인수의 값: | False |
-Options
기본적으로 Test-Json 주석 또는 후행 쉼표가 포함된 JSON을 지원하지 않습니다. 이 매개 변수를 사용하면 기본 동작을 변경하는 옵션을 지정할 수 있습니다. 다음과 같은 옵션을 사용할 수 있습니다.
IgnoreCommentsAllowTrailingCommas
이 매개 변수는 PowerShell 7.5.0-preview.4에 추가되었습니다.
매개 변수 속성
| 형식: | String[] |
| Default value: | None |
| 허용되는 값: | IgnoreComments, AllowTrailingCommas |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-Path
JSON 파일의 경로를 지정합니다. 이 cmdlet은 지정된 위치에 있는 항목을 가져옵니다. 와일드카드 문자는 허용되지만 패턴은 단일 파일로 확인되어야 합니다.
이 매개 변수는 PowerShell 7.4에 추가되었습니다.
매개 변수 속성
| 형식: | String |
| Default value: | None |
| 와일드카드 지원: | True |
| DontShow: | False |
매개 변수 집합
JsonPath
| Position: | 0 |
| 필수: | True |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | True |
| 나머지 인수의 값: | False |
JsonPathWithSchemaString
| Position: | 0 |
| 필수: | True |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | True |
| 나머지 인수의 값: | False |
JsonPathWithSchemaFile
| Position: | 0 |
| 필수: | True |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | True |
| 나머지 인수의 값: | False |
-Schema
JSON 입력의 유효성을 검사할 스키마를 지정합니다. 전달된 경우 Test-Json JSON 입력이 스키마 매개 변수로 지정된 사양을 준수하는지 확인하고 입력이 제공된 스키마를 준수하는 경우에만 $true 반환합니다.
매개 변수 속성
| 형식: | String |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
JsonStringWithSchemaString
| Position: | 1 |
| 필수: | True |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
JsonLiteralPathWithSchemaString
| Position: | 1 |
| 필수: | True |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
JsonPathWithSchemaString
| Position: | 1 |
| 필수: | True |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-SchemaFile
JSON 입력의 유효성을 검사하는 데 사용되는 스키마 파일을 지정합니다. 사용되는 경우 Test-Json JSON 입력이 $true 매개 변수로 지정된 파일에 정의된 스키마를 준수하는 경우에만 반환합니다.
매개 변수 속성
| 형식: | String |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
JsonStringWithSchemaFile
| Position: | 1 |
| 필수: | True |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
JsonLiteralPathWithSchemaFile
| Position: | 1 |
| 필수: | True |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
JsonPathWithSchemaFile
| Position: | 1 |
| 필수: | True |
| 파이프라인의 값: | 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 반환합니다.
참고
PowerShell 6부터 PowerShell은 JSON 함수에 Newtonsoft.Json 어셈블리를 사용합니다. Newtonsoft의 구현에는 주석 지원 및 작은따옴표 사용과 같은 JSON 표준에 대한 여러 확장이 포함되어 있습니다. 기능의 전체 목록은 https://www.newtonsoft.com/jsonNewtonsoft 설명서를 참조하세요.
PowerShell 7.4부터 Test-Json JSON 구문 분석 및 스키마 유효성 검사에 JsonSchema.NETSystem.Text.Json 사용합니다.
이러한 변경 내용으로 다음을 Test-Json.
- 더 이상 초안 4 스키마를 지원하지 않음
- 엄격하게 준수되는 JSON만 지원합니다.
Newtonsoft.Json과 System.Text.Json 간의 차이점에 대한 전체 목록은 Newtonsoft.Json에서 System.Text.Json차이점의 표를 참조하세요.
JSON 스키마 사양에 대한 자세한 내용은 JSON-Schema.org설명서를 참조하세요.