Tool Kumar 도구
JSON을 PHP 클래스로 변환
타입이 지정된 readonly 속성을 생성자에서 승격하는 PHP 8.1 이상용 클래스를 생성합니다. 각 클래스에는 원래 JSON 키를 매핑하고 중첩 객체를 만드는 fromArray 메서드가 있습니다.
도구 사용 방법
- 필드 구성이 서로 다른 레코드까지 포함해 대표적인 응답을 붙여넣습니다.
- 생성된 출력을 검토하고, 필요하면 ‘루트 이름’을 바꿉니다.
- 코드를 복사하거나 다운로드한 뒤, 타입이 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 생성기.