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

이 도구가 하는 일

깊게 중첩된 Perl 해시 레퍼런스를 노려보면서 대응되는 JSON을 손으로 써 본 적이 있다면 그 고통을 아실 겁니다 — => vs :, 따옴표 붙은 키, 이스케이프된 문자열, 그 모든 것 말이죠. 여기에 Perl을 붙여 넣으면 다시 쓸 필요 없이 유효한 JSON을 받을 수 있습니다. 단일 {...} 해시 레퍼런스, my $x = {...}; my $y = [...]; 선언이 줄줄이 이어지는 경우, 해시 레퍼런스 안에 해시 레퍼런스, 그 안에 다시 배열 레퍼런스가 있는 5단계 구조까지 모두 처리합니다.

결과는 canonical => 1 옵션을 준 JSON::PPCpanel::JSON::XS에서 나오는 것과 동일합니다. 해시 레퍼런스는 JSON 객체로, 배열 레퍼런스는 배열로, undefnull로, 숫자는 숫자 그대로, 문자열은 문자열 그대로 바뀝니다. "1"1 사이의 Perl 문서에 남은 전통적 모호함은 평소대로 해소됩니다 — 숫자로 보이면 JSON 숫자로 출력됩니다.

bless된 레퍼런스(Perl에서의 객체)는 내부 해시 레퍼런스까지 벗겨져 나오므로, bless { ... }, "Order"는 같은 키를 가진 평범한 JSON 객체로 나옵니다. JSON::true, JSON::false, JSON::null 같은 센티넬 값은 각각 JSON에 해당하는 값으로 변환됩니다. 최상위 선언이 여러 개라면 변수명을 키로 삼아 JSON 출력의 항목이 됩니다.

사용 방법

세 단계면 끝입니다. 작은 해시 레퍼런스를 붙여 넣든 전체 설정 덤프를 붙여 넣든 동일하게 동작합니다.

1

Perl을 붙여 넣으세요 (또는 샘플을 써 보세요)

왼쪽 에디터에 Perl을 그대로 떨어뜨리세요. 해시 레퍼런스, 배열 레퍼런스, 여러 선언, bless된 객체 — 모두 괜찮습니다. 현실적인 예시를 보고 싶다면 샘플 불러오기를 클릭하세요.

레퍼런스 문법은 그대로 두세요 — \%hash, \@array, {...}, [...]. 파서가 전부 이해합니다.

2

변환 버튼 클릭

초록색 변환 버튼을 클릭하세요. 도구가 Perl 구조를 훑으며 레퍼런스를 해석하고 한 번의 패스로 JSON을 만들어 냅니다.

3

JSON 복사

오른쪽 패널에 들여쓰기된 JSON이 표시되며, API 페이로드, 픽스처 파일, CPAN 모듈 테스트에 바로 쓸 수 있습니다. 복사하고 다음 일로 넘어가세요.

실제로 요긴한 상황

Storable 또는 Data::Dumper에서 벗어나기

수년간 쌓인 레거시 Perl 해시 덤프를 현대적인 API에 넘겨야 할 때 — JSON이 공용어입니다. 인코더를 따로 짜지 않고, 붙여 넣어 제대로 된 JSON을 받아 가세요.

Perl 스크립트에서 REST 엔드포인트 호출

크론 잡이 DB 쿼리로 해시 레퍼런스를 만든다고 합시다. REST API로 쏘기 전에 여기에 붙여 넣어 서버가 기대하는 JSON 형태와 맞는지 확인하세요.

테스트 픽스처 작성

Perl 모듈 테스트에서 해시 레퍼런스를 그대로 가져다 JSON으로 변환한 뒤, 언어 간 테스트를 위한 .json 픽스처 파일에 넣으세요.

Perl 바깥 팀과 설정 공유

Perl 설정 파일은 해시 레퍼런스를 여기저기서 씁니다. JSON으로 바꾸면 Node, Go, Python 팀이 Perl을 깔지 않고도 읽을 수 있습니다.

자주 묻는 질문

bless된 객체도 처리하나요?

네. bless된 해시 레퍼런스(예: bless { id => 1 }, "Order")는 내부 해시 레퍼런스로 취급됩니다 — 클래스 이름은 버려지고 키/값이 평범한 JSON 객체로 나옵니다. convert_blessed를 켠 JSON::PP의 동작과 동일합니다.

<code>undef</code>, <code>JSON::true</code>, <code>JSON::false</code>는요?

undef는 JSON null이 됩니다. JSON::true / \1true, JSON::false / \0false가 됩니다. Cpanel::JSON::XS의 표준적인 불리언 관습입니다.

<code>Data::Dumper</code> 출력을 붙여 넣어도 되나요?

됩니다 — Data::Dumper 출력($VAR1 = {...}; 형태)도 문제없이 파싱됩니다. 맨 앞의 $VAR1 =는 변수명으로 간주되어 바깥쪽 키가 됩니다.

숫자와 문자열은 어떻게 구분하나요?

Perl은 그 차이에 관대합니다. 이 변환기는 흔한 규칙을 따릅니다: 따옴표 없는 숫자 리터럴(42, 3.14)은 JSON 숫자로, 따옴표로 감싼 것("42")은 JSON 문자열로 남습니다. 숫자처럼 보이는 문자열이 필요하면 따옴표로 감싸세요.

제 코드가 저장되나요?

변환을 위해 백엔드로 전달되지만 저장되지 않습니다 — 페이로드를 로그에도 남기지 않습니다. 해시 레퍼런스에 실제 자격 증명이 들어 있다면 붙여 넣기 전에 바꿔 두세요.

해시 레퍼런스 여러 개를 붙여 넣으면요?

최상위 my $name = {...}; 각각이 변수명을 키로 JSON 출력의 항목이 됩니다. 익명 구조에는 "_1", "_2" 같은 이름이 붙습니다. 조용히 버려지는 건 없습니다.

같이 쓰면 좋은 도구

Perl to JSON은 나머지 도구들과도 잘 어울립니다: