ConvertFrom-Json
JSON 형식 문자열을 사용자 지정 개체 또는 해시 테이블로 변환합니다.
구문
Default (기본값)
ConvertFrom-Json
[-InputObject] <String>
[-AsHashtable]
[-Depth <Int32>]
[-NoEnumerate]
[<CommonParameters>]
Description
ConvertFrom-Json cmdlet은 JSON(JavaScript Object Notation) 형식 문자열을 JSON 문자열의 각 필드에 대한 속성이 있는 사용자 지정 PSCustomObject 개체로 변환합니다. JSON은 일반적으로 웹 사이트에서 개체의 텍스트 표현을 제공하는 데 사용됩니다. JSON 표준은 PSCustomObject금지된 사용을 금지하지 않습니다. 예를 들어 JSON 문자열에 중복 키가 포함된 경우 이 cmdlet에서 마지막 키만 사용됩니다. 아래의 다른 예제를 참조하세요.
모든 개체에서 JSON 문자열을 생성하려면 ConvertTo-Json cmdlet을 사용합니다.
이 cmdlet은 PowerShell 3.0에서 도입되었습니다.
비고
PowerShell 6부터 이 cmdlet은 주석이 있는 JSON을 지원합니다. 수락된 주석은 두 개의 슬래시(//)로 시작합니다. 주석은 데이터에 표시되지 않으며 PowerShell 5.1에서와 같이 데이터를 손상시키거나 오류를 throw하지 않고 파일에 쓸 수 있습니다.
예제
예제 1: DateTime 개체를 JSON 개체로 변환
이 명령은 ConvertTo-Json 및 ConvertFrom-Json cmdlet을 사용하여 DateTime 개체를 Get-Date cmdlet에서 JSON 개체로 변환한 다음 PSCustomObject변환합니다.
Get-Date | Select-Object -Property * | ConvertTo-Json | ConvertFrom-Json
DisplayHint : 2
DateTime : Friday, January 13, 2012 8:06:31 PM
Date : 1/13/2012 8:00:00 AM
Day : 13
DayOfWeek : 5
DayOfYear : 13
Hour : 20
Kind : 2
Millisecond : 400
Minute : 6
Month : 1
Second : 31
Ticks : 634620819914009002
TimeOfDay : @{Ticks=723914009002; Days=0; Hours=20; Milliseconds=400; Minutes=6; Seconds=31; TotalDays=0.83786343634490734; TotalHours=20.108722472277776; TotalMilliseconds=72391400.900200009; TotalMinutes=1206.5233483366667;TotalSeconds=72391.4009002}
Year : 2012
이 예제에서는 Select-Object cmdlet을 사용하여 DateTime 개체의 모든 속성을 가져옵니다.
ConvertTo-Json cmdlet을 사용하여 DateTime 개체를 JSON 개체로 형식이 지정된 문자열로 변환하고 ConvertFrom-Json cmdlet을 사용하여 JSON 형식 문자열을 PSCustomObject 개체로 변환합니다.
예제 2: 웹 서비스에서 JSON 문자열을 가져와서 PowerShell 개체로 변환
이 명령은 Invoke-WebRequest cmdlet을 사용하여 웹 서비스에서 JSON 문자열을 가져옵니다. 그런 다음 ConvertFrom-Json cmdlet을 사용하여 JSON 콘텐츠를 PowerShell에서 관리할 수 있는 개체로 변환합니다.
# Ensures that Invoke-WebRequest uses TLS 1.2
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$j = Invoke-WebRequest 'https://api.github.com/repos/PowerShell/PowerShell/issues' | ConvertFrom-Json
JSON 콘텐츠를 개체로 자동으로 변환하는 Invoke-RestMethod cmdlet을 사용할 수도 있습니다.
예제 3: JSON 문자열을 사용자 지정 개체로 변환
이 예제에서는 ConvertFrom-Json cmdlet을 사용하여 JSON 파일을 PowerShell 사용자 지정 개체로 변환하는 방법을 보여줍니다.
Get-Content JsonFile.JSON | ConvertFrom-Json
이 명령은 Get-Content cmdlet을 사용하여 JSON 파일에서 문자열을 가져옵니다. 그런 다음 파이프라인 연산자를 사용하여 구분된 문자열을 ConvertFrom-Json cmdlet으로 보내 사용자 지정 개체로 변환합니다.
예제 4: JSON 문자열을 해시 테이블로 변환
이 명령은 -AsHashtable 스위치가 명령의 제한을 극복할 수 있는 예를 보여 줍니다.
'{ "key":"value1", "Key":"value2" }' | ConvertFrom-Json -AsHashtable
JSON 문자열에는 대/소문자만 다른 키가 있는 두 개의 키 값 쌍이 포함되어 있습니다. 스위치가 없으면 명령이 오류를 발생시켰을 것입니다.
예제 5: 단일 요소 배열 왕복
이 명령은 -NoEnumerate 스위치를 사용하여 단일 요소 JSON 배열을 왕복하는 예제를 보여 줍니다.
Write-Output "With -NoEnumerate: $('[1]' | ConvertFrom-Json -NoEnumerate | ConvertTo-Json -Compress)"
Write-Output "Without -NoEnumerate: $('[1]' | ConvertFrom-Json | ConvertTo-Json -Compress)"
With -NoEnumerate: [1]
Without -NoEnumerate: 1
JSON 문자열에는 단일 요소가 있는 배열이 포함되어 있습니다. 스위치가 없으면 JSON을 PSObject로 변환한 다음 ConvertTo-Json 명령을 사용하여 다시 변환하면 단일 정수가 생성됩니다.
매개 변수
-AsHashtable
JSON을 해시 테이블 개체로 변환합니다. 이 스위치는 PowerShell 6.0에서 도입되었습니다.
ConvertFrom-Json cmdlet의 몇 가지 제한 사항을 극복할 수 있는 몇 가지 시나리오가 있습니다.
- JSON에 대/소문자만 다른 키가 있는 목록이 포함된 경우. 스위치가 없으면 해당 키는 동일한 키로 표시되므로 마지막 키만 사용됩니다.
- JSON에 빈 문자열인 키가 포함된 경우. 스위치가 없으면 a
PSCustomObject는 허용하지 않지만 해시 테이블은 허용하므로 cmdlet에서 오류가 발생합니다. 이 문제가 발생할 수 있는 사용 사례의 예는 파일입니다project.lock.json. - 해시 테이블은 특정 데이터 구조에 대해 더 빠르게 처리할 수 있습니다.
매개 변수 속성
| 형식: | SwitchParameter |
| Default value: | False |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-Depth
JSON 입력이 허용되는 최대 깊이를 가져오거나 설정합니다. 기본적으로 1024입니다.
이 매개 변수는 PowerShell 6.2에서 도입되었습니다.
매개 변수 속성
| 형식: | Int32 |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-InputObject
JSON 개체로 변환할 JSON 문자열을 지정합니다. 문자열이 포함된 변수를 입력하거나 문자열을 가져오는 명령이나 식을 입력합니다. 문자열을 ConvertFrom-Json로 전송할 수도 있습니다.
InputObject 매개 변수가 필요하지만 해당 값은 빈 문자열일 수 있습니다. 입력 개체가 빈 문자열인 경우 ConvertFrom-Json 출력을 생성하지 않습니다.
InputObject 값은 $null수 없습니다.
매개 변수 속성
| 형식: | String |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | 0 |
| 필수: | True |
| 파이프라인의 값: | True |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-NoEnumerate
출력이 열거되지 않도록 지정합니다.
이 매개 변수를 설정하면 모든 요소를 개별적으로 보내는 대신 배열이 단일 개체로 전송됩니다. 이렇게 하면 JSON이 ConvertTo-Json통해 라운드트립될 수 있습니다.
매개 변수 속성
| 형식: | SwitchParameter |
| Default value: | False |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
CommonParameters
이 cmdlet은 일반적인 매개 변수인 -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction 및 -WarningVariable 매개 변수를 지원합니다. 자세한 내용은 about_CommonParameters를 참조하세요.
입력
String
JSON 문자열을 ConvertFrom-Json으로 전송할 수 있습니다.
출력
PSCustomObject
Hashtable
참고
이 cmdlet은 Newtonsoft Json.NET사용하여 구현됩니다.
PowerShell 6부터 ConvertTo-Json 타임스탬프로 서식된 문자열을 DateTime 값으로 변환하려고 시도합니다. 변환된 값은 다음과 같이 [datetime] 속성이 설정된 Kind 인스턴스입니다.
-
Unspecified입력 문자열에 표준 시간대 정보가 없으면 입니다. -
Utc, 표준 시간대 정보가 후행Z이라면. -
Local표준 시간대 정보가 같은 후행 UTC+02:00지정되는 경우입니다. 오프셋이 호출자의 구성된 표준 시간대로 올바르게 변환됩니다. 기본 출력 형식은 원래 표준 시간대 오프셋을 나타내지 않습니다.