PowerShell → JSON 변환기
PowerShell 해시테이블 또는 PSCustomObject를 붙여넣으세요. JSON으로 돌려드립니다.
이 도구가 하는 일
PowerShell 스크립트에서 @{...} 해시테이블을 복사해 와서, 쉘을 열고 ConvertTo-Json으로 파이프하지 않고 JSON 상당물이 필요했던 적이 있다면 — 바로 이 도구를 위한 상황입니다. PowerShell을 붙여넣으면 깔끔한 JSON이 돌아옵니다. 단일 해시테이블, [PSCustomObject] 인스턴스, 배열이 들어 있는 중첩된 @{} 블록 체인 — 모두 동작합니다.
출력은 ConvertTo-Json -Depth 100이 주는 결과와 일치합니다. 해시테이블과 [PSCustomObject]는 둘 다 JSON 객체가 됩니다. 배열(@(1,2,3))은 JSON 배열이 됩니다. $null은 null로, $true/$false는 JSON 불리언으로 변환됩니다. DateTime 값은 ISO-8601 문자열로 출력되며, PowerShell 7과 같은 규칙입니다.
공백이나 특수문자가 들어간 키는 따옴표로 감싼 상태 그대로 유지됩니다. 숫자 리터럴(42, 3.14)은 숫자로 남습니다. 작은따옴표와 큰따옴표 문자열 둘 다 올바르게 파싱되며, 큰따옴표 안의 이스케이프 시퀀스(`n, `t)는 해석됩니다. 최상위 할당을 여러 개 붙여넣으면, 각각이 변수 이름을 딴 JSON 키로 출력됩니다.
사용법
세 단계입니다. 키가 두 개짜리 해시테이블이든 전체 설정 블록이든 똑같이 동작합니다.
PowerShell 붙여넣기 (또는 샘플 사용)
왼쪽 에디터에 스크립트 조각을 넣어주세요. 해시테이블, [PSCustomObject], 중첩된 @{} 블록, 객체 배열 — 다 됩니다. 샘플 불러오기는 현실적인 주문 예제를 보여줍니다.
따로 정리할 필요 없습니다 — $variable 접두어, [PSCustomObject] 캐스트, 주석까지 그대로 두세요.
변환 누르기
초록색 변환 버튼을 클릭하세요. 도구가 해시테이블을 파싱하고 중첩된 구조를 모두 훑어서 한 번에 JSON을 만들어냅니다.
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은 툴박스의 나머지 도구와 잘 어울립니다: