다음을 통해 공유


ConvertFrom-Json

JSON 형식 문자열을 사용자 지정 개체로 변환합니다.

구문

ConvertFrom-Json
                [-InputObject] <String>
                [<CommonParameters>]

Description

이 cmdlet은 ConvertFrom-Json JSON(JavaScript Object Notation) 형식 문자열을 JSON 문자열의 각 필드에 대한 속성이 있는 사용자 지정 PSObject 또는 Hashtable 개체로 변환합니다. JSON은 일반적으로 웹 사이트에서 개체의 텍스트 표현을 제공하는 데 사용됩니다. cmdlet은 JSON 문자열의 각 줄을 처리할 때 새 개체에 속성을 추가합니다.

JSON 표준은 PSObjectHashtable 형식에서 금지된 중복 키 이름을 허용합니다. 예를 들어 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 보내 사용자 지정 개체로 변환합니다.

매개 변수

-InputObject

JSON 개체로 변환할 JSON 문자열을 지정합니다. 문자열이 포함된 변수를 입력하거나 문자열을 가져오는 명령 또는 식을 입력합니다. 문자열을 .에 파이프할 ConvertFrom-Json수도 있습니다.

InputObject 매개 변수는 필수이지만 해당 값은 빈 문자열일 수 있습니다. 입력 개체가 빈 문자열인 경우 출력을 ConvertFrom-Json 생성하지 않습니다. InputObject 값은 .일 수 없습니다$null.

형식:String
Position:0
Default value:None
필수:True
파이프라인 입력 허용:True
와일드카드 문자 허용:False

입력

String

JSON 문자열을 .에 파이프할 ConvertFrom-Json수 있습니다.

출력

PSCustomObject

참고

cmdlet ConvertFrom-Json 은 JavaScriptSerializer 클래스사용하여 구현됩니다.

PSObject 형식은 JSON 문자열에 표시된 대로 속성의 순서를 유지 관리합니다. 키-값 쌍은 JSON 문자열에 표시된 순서대로 Hashtable에 추가되지만 Hashtable 개체는 해당 순서를 유지하지 않습니다.