Tool Kumar 도구

JSON을 PHP 클래스로 변환

타입이 지정된 readonly 속성을 생성자에서 승격하는 PHP 8.1 이상용 클래스를 생성합니다. 각 클래스에는 원래 JSON 키를 매핑하고 중첩 객체를 만드는 fromArray 메서드가 있습니다.

도구 사용 방법

  1. 필드 구성이 서로 다른 레코드까지 포함해 대표적인 응답을 붙여넣습니다.
  2. 생성된 출력을 검토하고, 필요하면 ‘루트 이름’을 바꿉니다.
  3. 코드를 복사하거나 다운로드한 뒤, 타입이 API 명세와 맞는지 확인합니다.

사용 예제

내장 변환기가 생성한 출력입니다. 두 항목의 price 값에서는 부동소수점 필드가, null과 문자열인 note 값에서는 null 허용 필드가 추론됩니다.

입력

{
  "user-id": 42,
  "profile": {
    "city": "London",
    "created_at": "2026-10-14T09:00:00Z"
  },
  "items": [
    {
      "price": 12,
      "note": null
    },
    {
      "price": 12.5,
      "note": "gift"
    }
  ]
}

출력

<?php

declare(strict_types=1);

final class Root
{
    public function __construct(
        public readonly int $userId,
        public readonly Profile $profile,
        /** @var Item[] */
        public readonly array $items,
    ) {
    }

    public static function fromArray(array $data): self
    {
        return new self(
            userId: $data['user-id'],
            profile: Profile::fromArray($data['profile']),
            items: array_map(static fn ($x) => Item::fromArray($x), $data['items']),
        );
    }
}

final class Profile
{
    public function __construct(
        public readonly string $city,
        public readonly string $createdAt,
    ) {
    }

    public static function fromArray(array $data): self
    {
        return new self(
            city: $data['city'],
            createdAt: $data['created_at'],
        );
    }
}

final class Item
{
    public function __construct(
        public readonly float $price,
        public readonly ?string $note,
    ) {
    }

    public static function fromArray(array $data): self
    {
        return new self(
            price: $data['price'],
            note: $data['note'],
        );
    }
}

배열과 타입 지정 모델 중 선택하기

PHP 연관 배열이 필요하다면 true를 넘긴 json_decode로 충분합니다. 생성된 모델을 쓰려면 그 배열을 Root::fromArray에 전달합니다. JSON_THROW_ON_ERROR는 잘못된 입력을 오류로 알려 줍니다.

ID가 PHP_INT_MAX를 넘으면 JSON_BIGINT_AS_STRING으로 각 자리의 숫자를 보존할 수 있지만, 생성된 해당 float 속성을 string으로 바꿔야 합니다. 추론된 float는 정확한 ID 타입이 아닙니다.

$data = json_decode($responseBody, true, 512, JSON_THROW_ON_ERROR);
$model = Root::fromArray($data);

옵션 및 예외 사항

  • 출력은 declare(strict_types=1)로 시작하며 final 클래스를 생성합니다. 중첩 객체 배열에는 PHPDoc 항목 타입과 array_map 생성 코드가 붙습니다.
  • null 허용 값은 ?type을 사용하고, null로만 관찰되거나 타입이 섞인 필드는 mixed를 사용합니다. 날짜는 string으로 남습니다.
  • 정수는 int를 쓰고, 부호 있는 64비트 범위를 넘는 정수는 float를 씁니다. 이때 정밀도를 잃을 수 있습니다. PHP 플랫폼 한계를 검토하고, 필요하면 큰 ID를 문자열로 디코딩합니다.
  • toArray나 JsonSerializable 구현은 없습니다. 클래스를 인코딩할 때 원래 JSON 키가 필요하다면 직렬화 코드를 직접 추가해야 합니다.

개인정보 보호 기본 적용

문서는 이 브라우저에만 보관됩니다. Tool Kumar는 기기 안에서 파싱, 변환, 다운로드 파일 생성을 처리하며 계정이나 업로드 과정이 필요하지 않습니다.

JSON을 PHP 클래스로 변환 자주 묻는 질문

JSON을 PHP 연관 배열로 변환할 수 있나요?
네. PHP 자체 기능인 json_decode($json, true, 512, JSON_THROW_ON_ERROR)를 쓰면 됩니다. 이 생성기는 PHP 배열 리터럴이 아니라 타입이 지정된 모델 클래스를 출력합니다.
생성된 코드에는 어떤 PHP 버전이 필요한가요?
readonly 승격 속성 때문에 PHP 8.1 이상이 필요합니다. 출력은 타입 지정 속성, 명명된 인수, strict_types도 사용합니다.
중첩 객체는 어떻게 클래스가 되나요?
fromArray가 중첩 클래스의 fromArray 메서드를 호출합니다. 중첩 객체 배열은 array_map을 사용하며, 항목 타입은 PHPDoc에 기록됩니다.
다시 JSON으로 인코딩할 때 키가 보존되나요?
fromArray 메서드는 입력 매핑을 보존합니다. 하지만 출력에 사용자 정의 인코더가 없으므로, 이 객체에 json_encode를 쓰면 속성 이름이 사용됩니다. 원래 JSON 키가 필요하다면 JsonSerializable이나 toArray 메서드를 추가합니다.

관련 도구

JSON으로 Pydantic 모델 생성, JSON을 Java 레코드로 변환 및 JSON Schema 생성기.