다음을 통해 공유


ConvertTo-Json

개체를 JSON 형식 문자열로 변환합니다.

구문

Default (기본값)

ConvertTo-Json
    [-InputObject] <Object>
    [-Depth <Int32>]
    [-Compress]
    [-EnumsAsStrings]
    [-AsArray]
    [-EscapeHandling <StringEscapeHandling>]
    [<CommonParameters>]

Description

ConvertTo-Json cmdlet은 모든 .NET 개체를 JSON(JavaScript Object Notation) 형식의 문자열로 변환합니다. 속성은 필드 이름으로 변환되고 필드 값은 속성 값으로 변환되며 메서드는 제거됩니다.

비고

PowerShell 7.2를 기준으로 DateTimeString 개체의 확장 형식 시스템 속성은 더 이상 직렬화되지 않으며 단순 개체만 JSON 형식으로 변환됩니다.

그런 다음 ConvertFrom-Json cmdlet을 사용하여 JSON 형식 문자열을 PowerShell에서 쉽게 관리할 수 있는 JSON 개체로 변환할 수 있습니다.

많은 웹 사이트에서는 XML 대신 JSON을 사용하여 서버와 웹 기반 앱 간의 통신을 위해 데이터를 직렬화합니다.

PowerShell 7.1을 기준으로 입력 개체의 깊이가 명령에 지정된 깊이를 초과하는 경우 ConvertTo-Json 경고를 내보낸다. 이렇게 하면 개체를 변환할 때 원치 않는 데이터 손실이 방지됩니다.

이 cmdlet은 Windows PowerShell 3.0에서 도입되었습니다.

예제

예제 1

(Get-UICulture).Calendar | ConvertTo-Json
{
  "MinSupportedDateTime": "0001-01-01T00:00:00",
  "MaxSupportedDateTime": "9999-12-31T23:59:59.9999999",
  "AlgorithmType": 1,
  "CalendarType": 1,
  "Eras": [
    1
  ],
  "TwoDigitYearMax": 2029,
  "IsReadOnly": true
}

이 명령은 ConvertTo-Json cmdlet을 사용하여 GregorianCalendar 개체를 JSON 형식 문자열로 변환합니다.

예제 2

Get-Date | ConvertTo-Json; Get-Date | ConvertTo-Json -AsArray
"2021-08-05T16:13:05.6394416-07:00"
[
  "2021-08-05T16:13:05.6421709-07:00"
]

이 예제에서는 ConvertTo-Json switch 매개 변수를 사용하거나 사용하지 않는 cmdlet의 출력을 보여줍니다. 출력의 두 번째 부분이 배열 대괄호로 래핑되는 것을 볼 수 있습니다.

예제 3

@{Account="User01";Domain="Domain01";Admin="True"} | ConvertTo-Json -Compress
{"Domain":"Domain01","Account":"User01","Admin":"True"}

이 명령은 ConvertTo-Json 매개 변수를 사용하는 효과를 보여줍니다. 압축은 문자열의 모양에만 영향을 주며 유효성은 영향을 받지 않습니다.

예제 4

Get-Date | Select-Object -Property * | ConvertTo-Json
{
  "DisplayHint": 2,
  "DateTime": "October 12, 2018 10:55:32 PM",
  "Date": "2018-10-12T00:00:00-05:00",
  "Day": 12,
  "DayOfWeek": 5,
  "DayOfYear": 285,
  "Hour": 22,
  "Kind": 2,
  "Millisecond": 639,
  "Minute": 55,
  "Month": 10,
  "Second": 32,
  "Ticks": 636749817326397744,
  "TimeOfDay": {
    "Ticks": 825326397744,
    "Days": 0,
    "Hours": 22,
    "Milliseconds": 639,
    "Minutes": 55,
    "Seconds": 32,
    "TotalDays": 0.95523888627777775,
    "TotalHours": 22.925733270666665,
    "TotalMilliseconds": 82532639.774400011,
    "TotalMinutes": 1375.54399624,
    "TotalSeconds": 82532.6397744
  },
  "Year": 2018
}

이 예제에서는 ConvertTo-Json cmdlet을 사용하여 System.DateTime 개체를 Get-Date cmdlet에서 JSON 형식 문자열로 변환합니다. 이 명령은 Select-Object cmdlet을 사용하여 * 개체 속성의 모든()를 가져옵니다. 출력에는 반환된 JSON 문자열이 ConvertTo-Json 표시됩니다.

예제 5

Get-Date | Select-Object -Property * | ConvertTo-Json | ConvertFrom-Json
DisplayHint : 2
DateTime    : October 12, 2018 10:55:52 PM
Date        : 2018-10-12 12:00:00 AM
Day         : 12
DayOfWeek   : 5
DayOfYear   : 285
Hour        : 22
Kind        : 2
Millisecond : 768
Minute      : 55
Month       : 10
Second      : 52
Ticks       : 636749817527683372
TimeOfDay   : @{Ticks=825527683372; Days=0; Hours=22; Milliseconds=768; Minutes=55; Seconds=52;
              TotalDays=0.95547185575463; TotalHours=22.9313245381111; TotalMilliseconds=82552768.3372;
              TotalMinutes=1375.87947228667; TotalSeconds=82552.7683372}
Year        : 2018

이 예제에서는 ConvertTo-JsonConvertFrom-Json cmdlet을 사용하여 개체를 JSON 문자열 및 JSON 개체로 변환하는 방법을 보여 줍니다.

매개 변수

-AsArray

입력이 단일 개체인 경우에도 배열 대괄호로 개체를 출력합니다.

매개 변수 속성

형식:SwitchParameter
Default value:None
와일드카드 지원:False
DontShow:False

매개 변수 집합

(All)
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-Compress

출력 문자열에서 공백 및 들여쓰기 서식을 생략합니다.

매개 변수 속성

형식:SwitchParameter
Default value:None
와일드카드 지원:False
DontShow:False

매개 변수 집합

(All)
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-Depth

JSON 표현에 포함된 개체의 수준을 지정합니다. 값은 0100수 있습니다. 기본값은 2입니다. ConvertTo-Json 입력 개체의 수준 수가 이 수를 초과하는 경우 경고를 내보낸다.

매개 변수 속성

형식:Int32
Default value:2
와일드카드 지원:False
DontShow:False

매개 변수 집합

(All)
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-EnumsAsStrings

모든 열거형을 문자열 표현으로 변환하는 대체 serialization 옵션을 제공합니다.

매개 변수 속성

형식:SwitchParameter
Default value:None
와일드카드 지원:False
DontShow:False

매개 변수 집합

(All)
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-EscapeHandling

결과 JSON 출력에서 특정 문자를 이스케이프하는 방법을 제어합니다. 기본적으로 줄임표와 같은 컨트롤 문자만 이스케이프됩니다.

허용되는 값은 다음과 같습니다.

  • 기본값 - 컨트롤 문자만 이스케이프됩니다.
  • EscapeNonAscii - ASCII가 아닌 모든 문자와 컨트롤 문자가 이스케이프됩니다.
  • EscapeHtml - HTML(<, >, &, ', ") 및 컨트롤 문자가 이스케이프됩니다.

이 매개 변수는 PowerShell 6.2에서 도입되었습니다.

매개 변수 속성

형식:Newtonsoft.Json.StringEscapeHandling
Default value:Default
와일드카드 지원:False
DontShow:False

매개 변수 집합

(All)
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-InputObject

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

InputObject 매개 변수가 필요하지만 해당 값은 null($null) 또는 빈 문자열일 수 있습니다. 입력 개체가 $nullConvertTo-JsonnullJSON 표현을 반환합니다. 입력 개체가 빈 문자열이면 ConvertTo-Json 빈 문자열의 JSON 표현을 반환합니다.

매개 변수 속성

형식:Object
Default value:None
와일드카드 지원:False
DontShow:False

매개 변수 집합

(All)
Position:0
필수:True
파이프라인의 값:True
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

CommonParameters

이 cmdlet은 일반적인 매개 변수인 -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction 및 -WarningVariable 매개 변수를 지원합니다. 자세한 내용은 about_CommonParameters를 참조하세요.

입력

Object

모든 객체를 이 cmdlet에 파이핑할 수 있습니다.

출력

String

이 cmdlet은 JSON 문자열로 변환된 입력 개체를 나타내는 문자열을 반환합니다.

참고

ConvertTo-Json cmdlet은 Newtonsoft Json.NET사용하여 구현됩니다.