PHP를 JSON으로 변환기
PHP 클래스, 배열, 객체를 붙여 넣으세요. 깔끔한 JSON이 돌아옵니다.
이 도구가 하는 일
타입드 프로퍼티로 가득한 PHP 클래스가 있는데 테스트, API 호출, 픽스처용으로 JSON 페이로드가 필요하다면, 배열을 손으로 쓰는 건 번거롭습니다. PHP를 여기에 붙여 넣으면 모든 프로퍼티가 보존된 유효한 JSON이 돌아옵니다. 클래스 하나든, Doctrine 엔티티 파일이든, Laravel Eloquent 모델이든, 그냥 연관 배열이든 — 결과는 같습니다. 유효한 JSON이 나옵니다.
이 변환기는 런타임의 json_encode()와 똑같이 동작합니다. 타입드 프로퍼티(PHP 7.4+)와 readonly 프로퍼티(PHP 8.1+)는 일반 JSON 키로 나옵니다. 정수, 실수, 불리언, 문자열은 1:1로 매핑됩니다. null은 JSON null이 됩니다. 중첩된 객체 인스턴스는 중첩된 JSON 객체로 펼쳐집니다. 연관 배열은 JSON 객체로, 숫자 인덱스 배열은 JSON 배열로 — json_encode가 하는 바로 그 구분 그대로입니다.
모던 PHP 기능도 지원합니다. 백드 enum은 백킹 값(문자열 또는 정수)으로 직렬화됩니다. DateTimeImmutable은 ISO-8601 문자열로 나옵니다. 여러 클래스를 한 번에 붙여 넣으면 — Packagist에서 긁어온 코드처럼 — 각 최상위 클래스가 JSON에서 자기만의 키가 되고, 중첩 타입도 펼쳐집니다. 메서드, 상수, 정적 프로퍼티는 건너뜁니다. 인스턴스 데이터만 출력에 담깁니다.
사용하는 법
세 단계입니다. 열 줄을 붙여 넣든 Model 파일 하나를 통째로 붙여 넣든 똑같이 동작합니다.
PHP를 붙여 넣으세요 (또는 샘플을 써 보세요)
PHP를 왼쪽 에디터에 그대로 넣으세요. 클래스 정의, new 인스턴스, 연관 배열, 여러 클래스 — 전부 괜찮습니다. 현실적인 예시부터 보고 싶다면 샘플 불러오기를 누르세요.
PHP 문법을 그대로 유지하세요 — 네임스페이스, use 문, 가시성 수정자, 속성. 파서가 필요 없는 보일러플레이트는 알아서 무시합니다.
변환 버튼을 누르세요
녹색 변환 버튼을 누르세요. 도구가 PHP를 읽고, 모든 프로퍼티와 클래스를 보존하면서 한 번에 JSON을 만들어 냅니다. 실행되는 동안 짧은 로딩 표시가 보입니다.
JSON을 복사하세요
오른쪽 패널이 들여쓰기된 JSON으로 채워집니다. HTTP 요청 본문, PHPUnit 픽스처, 설정 파일, API 문서에 바로 붙여 쓰시면 됩니다.
이럴 때 진짜 유용합니다
API 요청 페이로드 만들기
CreateOrderRequest DTO가 있고 Postman, curl, 통합 테스트용으로 매칭되는 JSON 본문이 필요할 때. 클래스를 붙여 넣으면 페이로드가 나옵니다.
Laravel 또는 Symfony 시딩
팩토리의 <code>new Product(...)</code> 줄들을 database:seed나 픽스처 로더용 JSON 시드 파일로 변환하세요 — 더 이상 손으로 배열을 만들 필요 없습니다.
OpenAPI 예시를 실제에 맞추기
실제 DTO에서 바로 OpenAPI 스펙용 JSON 예시를 생성하면, 스키마 예시가 코드와 계속 동기화됩니다.
json_encode 출력 디버깅
객체가 생각한 대로 직렬화되지 않을 때, 여기에 붙여 넣어 깔끔한 형태를 확인하고 실제 <code>json_encode()</code> 결과와 비교해 보세요.
자주 묻는 질문
PHP 8의 타입드 및 readonly 프로퍼티를 처리하나요?
네. 타입드 프로퍼티, nullable 타입(?string), readonly 수정자, 생성자 프로모티드 프로퍼티 모두 잡아냅니다. 타입 힌트가 JSON 값을 바꾸지는 않습니다 — 파서에게 무엇을 기대할지 알려주는 용도입니다.
enum은 어떻게 되나요?
백드 enum은 백킹 값(string 또는 int)으로 직렬화됩니다. 백킹 타입이 없는 순수 enum은 case 이름으로 출력됩니다. BackedEnum에 대한 표준 json_encode 동작과 같습니다.
연관 배열 vs 인덱스 배열 — 어느 쪽이 객체가 되나요?
json_encode와 같은 규칙입니다. 0부터 시작하는 순차 배열은 JSON 배열이 되고, 문자열 키(또는 비순차 정수 키)가 있는 배열은 JSON 객체가 됩니다.
DateTime과 DateTimeImmutable은 어떻게 직렬화되나요?
ISO-8601 문자열로, $dt->format(DateTime::ATOM)에서 얻는 것과 같은 포맷입니다. 날짜에 타임존이 있으면 오프셋이 출력에 그대로 보존됩니다.
모델 파일을 통째로 붙여 넣어도 되나요?
네. 최상위 클래스마다 자기만의 JSON 엔트리가 되고, 중첩 객체는 자연스럽게 펼쳐지며, 생성자에서 세팅된 프로퍼티도 포함됩니다. private, protected 프로퍼티도 나옵니다 — 파서는 가시성이 아니라 형태를 봅니다.
제 코드가 저장되나요?
PHP는 변환을 위해 백엔드로 전송되고 저장되지 않습니다 — 페이로드를 로깅하지 않습니다. 민감한 코드라면 붙여 넣기 전에 한 번 훑어보시는 걸 권장합니다.
함께 필요할 수 있는 도구들
PHP에서 JSON은 하나의 조각일 뿐입니다. 아래 도구들과 잘 어울립니다: