Test-Json
문자열이 유효한 JSON 문서인지 여부를 테스트합니다.
구문
Test-Json
[-Json] <String>
[<CommonParameters>]
Test-Json
[-Json] <string>
[-Schema] <string>
[<CommonParameters>]
Test-Json
[-Json] <string>
[-SchemaFile] <string>
[<CommonParameters>]
Test-Json
[-Path] <string>
[<CommonParameters>]
Test-Json
[-Path] <string>
[-Schema] <string>
[<CommonParameters>]
Test-Json
[-Path] <string>
[-SchemaFile] <string>
[<CommonParameters>]
Test-Json
[-LiteralPath] <string>
[<CommonParameters>]
Test-Json
[-LiteralPath] <string>
[-Schema] <string>
[<CommonParameters>]
Test-Json
[-LiteralPath] <string>
[-SchemaFile] <string>
[<CommonParameters>]
Description
cmdlet은 Test-Json
문자열이 유효한 JSON(JavaScript Object Notation) 문서인지 여부를 테스트하고 제공된 스키마에 대해 JSON 문서를 선택적으로 확인할 수 있습니다.
그런 다음 확인된 문자열을 cmdlet과 함께 ConvertFrom-Json
사용하여 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
| ~~~~~~~~~~~~~~~~~~~~~~~~~
| The JSON is not valid with the schema: Value is "string" but should be "integer" at '/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 |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | False |
-LiteralPath
JSON 파일의 경로를 지정합니다. LiteralPath의 값은 입력된 대로 정확하게 사용됩니다. 와일드카드로 해석되는 문자는 없습니다. 경로에 이스케이프 문자가 포함된 경우 작은따옴표로 묶습니다. 작은따옴표는 PowerShell에 문자를 이스케이프 시퀀스로 해석하지 않도록 지시합니다.
이 매개 변수는 PowerShell 7.4에 추가되었습니다.
형식: | String |
별칭: | PSPath, LP |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | False |
-Path
JSON 파일의 경로를 지정합니다. 이 cmdlet은 지정된 위치에 있는 항목을 가져옵니다. 와일드카드 문자는 허용되지만 패턴은 단일 파일로 확인되어야 합니다.
이 매개 변수는 PowerShell 7.4에 추가되었습니다.
형식: | String |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | True |
-Schema
JSON 입력의 유효성을 검사할 스키마를 지정합니다. 전달된 Test-Json
경우 JSON 입력이 스키마 매개 변수로 지정된 사양을 준수하는지 확인하고 입력이 제공된 스키마 를 준수하는 경우에만 반환 $true
합니다.
자세한 내용은 JSON 스키마를 참조하세요.
형식: | String |
Position: | 1 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-SchemaFile
JSON 입력의 유효성을 검사하는 데 사용되는 스키마 파일을 지정합니다. 사용되는 Test-Json
경우 JSON 입력이 SchemaFile 매개 변수로 지정된 파일에 정의된 스키마를 준수하는 경우에만 반환 $true
됩니다.
자세한 내용은 JSON 스키마를 참조하세요.
형식: | String |
Position: | 1 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
입력
JSON 문자열을 이 cmdlet으로 파이프할 수 있습니다.
출력
Boolean
이 cmdlet은 JSON이 유효한지, 그렇지 않으면 $false
반환 $true
합니다.
참고
PowerShell 6부터 PowerShell은 JSON 함수에 Newtonsoft.Json 어셈블리를 사용합니다. Newtonsoft의 구현에는 주석 지원 및 작은따옴표 사용과 같은 JSON 표준에 대한 여러 확장이 포함되어 있습니다. 기능의 전체 목록은 Newtonsoft 설명서를 참조하세요 https://www.newtonsoft.com/json.
PowerShell 7.4 Test-Json
부터 JSON 구문 분석 및 스키마 유효성 검사에 JsonSchema.NET System.Text.Json을 사용합니다.
이러한 변경 내용으로 다음을 수행합니다. Test-Json
- 더 이상 초안 4 스키마를 지원하지 않음
- 엄격하게 준수되는 JSON만 지원합니다.
Newtonsoft.Json과 System.Text.Json 간의 차이점에 대한 전체 목록은 Newtonsoft.Json에서 System.Text.Json으로 마이그레이션의 차이점 표를 참조하세요.
JSON 스키마 사양에 대한 자세한 내용은 JSON-Schema.org 설명서를 참조하세요.
관련 링크
PowerShell