ConvertFrom-Json
JSON 형식 문자열을 사용자 지정 개체 또는 해시 테이블로 변환합니다.
구문
ConvertFrom-Json
[-InputObject] <String>
[-AsHashtable]
[-Depth <Int32>]
[-NoEnumerate]
[<CommonParameters>]
Description
이 cmdlet은 ConvertFrom-Json
JSON(JavaScript Object Notation) 형식 문자열을 JSON 문자열의 각 필드에 대한 속성이 있는 사용자 지정 PSObject 또는 Hashtable 개체로 변환합니다.
JSON은 일반적으로 웹 사이트에서 개체의 텍스트 표현을 제공하는 데 사용됩니다. cmdlet은 JSON 문자열의 각 줄을 처리할 때 새 개체에 속성을 추가합니다.
JSON 표준은 PSObject 및 Hashtable 형식에서 금지된 중복 키 이름을 허용합니다. 예를 들어 JSON 문자열에 중복 키가 포함된 경우 이 cmdlet에서 마지막 키만 사용됩니다. 아래의 다른 예제를 참조하세요.
모든 개체에서 JSON 문자열을 생성하려면 cmdlet을 ConvertTo-Json
사용합니다.
이 cmdlet은 PowerShell 3.0에서 도입되었습니다.
참고 항목
PowerShell 6부터 cmdlet은 주석이 있는 JSON을 지원합니다. JSON 주석은 두 개의 슬래시(//
) 문자로 시작합니다. JSON 주석은 cmdlet에 의해 출력되는 개체에 캡처되지 않습니다. PowerShell 6 ConvertFrom-Json
이전에는 JSON 주석이 발견되면 오류를 반환합니다.
예제
예제 1: DateTime 개체를 JSON 개체로 변환
이 명령은 and ConvertFrom-Json
cmdlet을 사용하여 ConvertTo-Json
DateTime 개체를 cmdlet에서 Get-Date
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
이 예제에서는 cmdlet을 Select-Object
사용하여 DateTime 개체의 모든 속성을 가져옵니다. 이 cmdlet을 사용하여 DateTime 개체를 JSON 개체로 서식이 지정된 문자열로 변환하고 ConvertFrom-Json
cmdlet을 사용하여 ConvertTo-Json
JSON 형식 문자열을 PSCustomObject 개체로 변환합니다.
예제 2: 웹 서비스에서 JSON 문자열을 가져와서 PowerShell 개체로 변환
이 명령은 cmdlet을 Invoke-WebRequest
사용하여 웹 서비스에서 JSON 문자열을 가져와서 cmdlet을 사용하여 ConvertFrom-Json
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 문자열을 사용자 지정 개체로 변환
이 예제에서는 cmdlet을 ConvertFrom-Json
사용하여 JSON 파일을 PowerShell 사용자 지정 개체로 변환하는 방법을 보여줍니다.
Get-Content -Raw JsonFile.JSON | ConvertFrom-Json
이 명령은 Get-Content cmdlet을 사용하여 JSON 파일에서 문자열을 가져옵니다. Raw 매개 변수는 전체 파일을 단일 JSON 개체로 반환합니다. 그런 다음 파이프라인 연산자를 사용하여 구분된 문자열을 cmdlet으로 ConvertFrom-Json
보내 사용자 지정 개체로 변환합니다.
예제 4: JSON 문자열을 해시 테이블로 변환
이 명령은 스위치가 명령의 -AsHashtable
제한을 극복할 수 있는 예를 보여 줍니다.
'{ "key":"value1", "Key":"value2" }' | ConvertFrom-Json -AsHashtable
JSON 문자열에는 대/소문자만 다른 키가 있는 두 개의 키 값 쌍이 포함되어 있습니다. 스위치가 없으면 명령이 오류를 throw했을 것입니다.
예제 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에서 도입되었습니다. PowerShell 7.3부터 개체는 OrderedHashtable이며 JSON에서 키의 순서를 유지합니다. 이전 버전에서는 개체가 해시 테이블입니다.
cmdlet의 몇 가지 제한 사항을 극복할 수 있는 몇 가지 시나리오가 ConvertFrom-Json
있습니다.
- 이 스위치가 없으면 JSON 개체의 두 개 이상의 키가 대/소문자를 구분하지 않고 동일한 키로 처리됩니다. 이 경우 대/소문자를 구분하지 않는 마지막 키만 변환된 개체에 포함됩니다.
- 이 스위치가 없으면 JSON에 빈 문자열인 키가 포함될 때마다 cmdlet이 오류를 throw합니다. PSCustomObject 에는 빈 문자열인 속성 이름을 가질 수 없습니다. 예를 들어 파일에서
project.lock.json
발생할 수 있습니다. - 해시 테이블은 특정 데이터 구조에 대해 더 빠르게 처리할 수 있습니다.
형식: | SwitchParameter |
Position: | Named |
Default value: | False |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Depth
JSON 입력이 허용되는 최대 깊이를 가져오거나 설정합니다. 기본값은 1024입니다.
이 매개 변수는 PowerShell 6.2에서 도입되었습니다.
형식: | Int32 |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-InputObject
JSON 개체로 변환할 JSON 문자열을 지정합니다. 문자열이 포함된 변수를 입력하거나 문자열을 가져오는 명령 또는 식을 입력합니다. 문자열을 .에 파이프할 ConvertFrom-Json
수도 있습니다.
InputObject 매개 변수는 필수이지만 해당 값은 빈 문자열일 수 있습니다. 입력 개체가 빈 문자열인 경우 출력을 ConvertFrom-Json
생성하지 않습니다. InputObject 값은 .일 수 없습니다$null
.
형식: | String |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | False |
-NoEnumerate
출력이 열거되지 않도록 지정합니다.
이 매개 변수를 설정하면 모든 요소를 개별적으로 보내는 대신 배열이 단일 개체로 전송됩니다. 이렇게 하면 JSON을 통해 ConvertTo-Json
라운드트립할 수 있습니다.
형식: | SwitchParameter |
Position: | Named |
Default value: | False |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
입력
JSON 문자열을 .에 파이프할 ConvertFrom-Json
수 있습니다.
출력
PSCustomObject
참고
이 cmdlet은 Newtonsoft Json.NET 사용하여 구현됩니다.
PowerShell 6 ConvertTo-Json
부터 타임스탬프로 서식이 지정된 문자열을 DateTime 값으로 변환하려고 시도합니다. 변환된 값은 [datetime]
다음과 같이 속성이 Kind
설정된 인스턴스입니다.
Unspecified
입력 문자열에 표준 시간대 정보가 없으면 입니다.Utc
- 표준 시간대 정보가 후행Z
인 경우 .Local
- 표준 시간대 정보가 다음과 같은+02:00
후행 UTC 오프셋으로 지정된 경우 오프셋이 호출자의 구성된 표준 시간대로 올바르게 변환됩니다. 기본 출력 서식은 원래 표준 시간대 오프셋을 나타내지 않습니다.
PSObject 형식은 JSON 문자열에 표시된 대로 속성의 순서를 유지 관리합니다. PowerShell 7.3부터 AsHashtable 매개 변수는 OrderedHashtable을 만듭니다. 키-값 쌍은 JSON 문자열에 표시된 순서대로 추가됩니다. OrderedHashtable은 해당 순서를 유지합니다.
관련 링크
PowerShell