왼쪽에 PowerShell을 붙여넣고 "변환"을 클릭하세요 — JSON으로 바꿔드립니다PowerShell 코드 붙여넣기

이 도구가 하는 일

PowerShell 스크립트에서 @{...} 해시테이블을 복사해 와서, 쉘을 열고 ConvertTo-Json으로 파이프하지 않고 JSON 상당물이 필요했던 적이 있다면 — 바로 이 도구를 위한 상황입니다. PowerShell을 붙여넣으면 깔끔한 JSON이 돌아옵니다. 단일 해시테이블, [PSCustomObject] 인스턴스, 배열이 들어 있는 중첩된 @{} 블록 체인 — 모두 동작합니다.

출력은 ConvertTo-Json -Depth 100이 주는 결과와 일치합니다. 해시테이블과 [PSCustomObject]는 둘 다 JSON 객체가 됩니다. 배열(@(1,2,3))은 JSON 배열이 됩니다. $nullnull로, $true/$false는 JSON 불리언으로 변환됩니다. DateTime 값은 ISO-8601 문자열로 출력되며, PowerShell 7과 같은 규칙입니다.

공백이나 특수문자가 들어간 키는 따옴표로 감싼 상태 그대로 유지됩니다. 숫자 리터럴(42, 3.14)은 숫자로 남습니다. 작은따옴표와 큰따옴표 문자열 둘 다 올바르게 파싱되며, 큰따옴표 안의 이스케이프 시퀀스(`n, `t)는 해석됩니다. 최상위 할당을 여러 개 붙여넣으면, 각각이 변수 이름을 딴 JSON 키로 출력됩니다.

사용법

세 단계입니다. 키가 두 개짜리 해시테이블이든 전체 설정 블록이든 똑같이 동작합니다.

1

PowerShell 붙여넣기 (또는 샘플 사용)

왼쪽 에디터에 스크립트 조각을 넣어주세요. 해시테이블, [PSCustomObject], 중첩된 @{} 블록, 객체 배열 — 다 됩니다. 샘플 불러오기는 현실적인 주문 예제를 보여줍니다.

따로 정리할 필요 없습니다 — $variable 접두어, [PSCustomObject] 캐스트, 주석까지 그대로 두세요.

2

변환 누르기

초록색 변환 버튼을 클릭하세요. 도구가 해시테이블을 파싱하고 중첩된 구조를 모두 훑어서 한 번에 JSON을 만들어냅니다.

3

JSON 복사하기

오른쪽 패널이 들여쓰기된 JSON으로 채워집니다. ARM 템플릿, Invoke-RestMethod 본문, Pester 테스트용 JSON 픽스처에 바로 붙여넣으면 됩니다.

실제로 쓸모 있는 순간

REST API 요청 본문 만들기

<code>Invoke-RestMethod</code>로 보낼 해시테이블이 준비됐는데 JSON 형태를 먼저 확인하고 싶을 때. 붙여넣고, 확인하고, 배포하세요.

설정 해시테이블을 JSON 파일로 변환

팀에서 <code>.psd1</code> 설정 파일을 쓰는데 새 서비스는 JSON을 기대하는 경우. 해시테이블을 붙여넣고 결과를 <code>config.json</code>으로 저장하세요.

ARM / Bicep 파라미터 파일

ARM 템플릿 파라미터는 JSON이지만, 처음에는 PowerShell 해시테이블로 짜는 경우가 많습니다. 한 번 변환해서 JSON을 커밋하면 끝입니다.

후속 도구에 데이터 넘기기

PowerShell CI 스크립트가 Python, Node, 또는 stdin으로 JSON을 받는 컨테이너 명령어에 구조화된 데이터를 전달해야 하는 일이 많습니다. 바로 그 연결 지점입니다.

자주 묻는 질문

ConvertTo-Json 출력과 일치하나요?

네 — 목표는 ConvertTo-Json -Depth 100 -Compress:$false와의 동등성입니다. 해시테이블과 [PSCustomObject] 객체 모두 JSON 객체가 되고, 배열은 JSON 배열이 되며, $null, $true, $false는 보통 방식대로 매핑됩니다.

[PSCustomObject]와 일반 해시테이블의 차이는요?

둘 다 같은 JSON 객체로 변환됩니다. [PSCustomObject]는 속성 순서를 보존하며 이 도구도 그것을 존중합니다. 일반 해시테이블은 기본적으로 알파벳순으로 정렬됩니다 — ConvertTo-Json과 같습니다.

스크립트 전체를 붙여넣어도 되나요?

네, 다만 출력에 포함되는 것은 최상위 $variable = @{...}[PSCustomObject]@{...} 할당뿐입니다. 함수 정의, 제어 흐름, 커맨드렛 호출은 무시됩니다. 최상위 변수는 각각 변수 이름을 딴 JSON 키가 됩니다.

날짜와 숫자는 어떻게 처리되나요?

[DateTime]Get-Date 출력은 ISO-8601 문자열로 나옵니다. 숫자 리터럴([decimal] 포함)은 JSON 숫자로 남습니다. 원시 문자열로 붙여넣은 날짜는 문자열로 유지됩니다.

제 코드가 저장되나요?

변환을 위해 백엔드로 전송되지만 저장되지 않습니다 — 페이로드를 로깅하지 않습니다. 해시테이블에 비밀 정보가 있다면 붙여넣기 전에 가려주세요.

here-string과 여러 줄 문자열 값도 처리되나요?

네. @"..."@@'...'@ here-string은 올바른 개행 인코딩과 함께 JSON 문자열로 보존됩니다.

함께 쓰면 좋은 다른 도구

PowerShell → JSON은 툴박스의 나머지 도구와 잘 어울립니다: