ConvertTo-Json

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

Syntax

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

Description

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

참고 항목

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

그런 다음 cmdlet을 ConvertFrom-Json 사용하여 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
}

이 명령은 cmdlet을 ConvertTo-Json 사용하여 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"
]

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

예 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
}

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

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

매개 변수

-AsArray

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

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Compress

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

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Depth

JSON 표현에 포함된 개체의 수준을 지정합니다. 이 값은 1에서 1 0 까지 100의 숫자일 수 있습니다. 기본값은 2입니다. ConvertTo-Json 입력 개체의 수준 수가 이 수를 초과하면 경고를 내보낸다.

Type:Int32
Position:Named
Default value:2
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-EnumsAsStrings

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

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-EscapeHandling

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

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

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

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

Type:Newtonsoft.Json.StringEscapeHandling
Position:Named
Default value:Default
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

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

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

Type:Object
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

입력

Object

모든 개체를 이 cmdlet으로 파이프할 수 있습니다.

출력

String

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

참고

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