JSON 객체에서 직렬화된 PHP 객체로 변환기
다용도 PHP 직렬화 및 역직렬화 도구로 PHP에서 데이터를 손쉽게 직렬화하고 역직렬화하세요. 이 온라인 도구는 복잡한 데이터 구조를 저장 가능한 문자열로 변환하고 원래 형태로 되돌리려는 개발자에게 적합합니다. 소프트웨어를 설치하지 않고도 정확하고 효율적으로 데이터를 처리할 수 있습니다. 사용자 친화적이고 안정적인 도구로 PHP 개발 워크플로우를 개선하세요.
자주 묻는 질문
PHP에서 데이터를 직렬화하려면 제공된 입력란에 데이터 구조(배열, 객체 또는 스칼라 값)를 입력하고 직렬화 버튼을 클릭하세요. 이 도구는 PHP의 직렬화 프로토콜을 사용해 복잡한 데이터 구조를 저장 가능한 문자열 형식으로 변환합니다. 이렇게 생성한 표현은 파일이나 데이터베이스에 저장하거나 네트워크를 통해 전송할 수 있습니다.
PHP에서 데이터를 역직렬화하려면 직렬화된 문자열(일반적으로 a:, s: 또는 O:와 같은 형식 표시자로 시작)을 입력란에 입력하고 역직렬화 버튼을 클릭하세요. 이 도구는 문자열을 원래 데이터 구조로 되돌려 직렬화 전과 똑같이 배열, 객체 및 값을 복원합니다.
직렬화는 복잡한 데이터 구조를 저장 가능한 문자열로 변환하여 파일이나 데이터베이스에 데이터를 영구 저장하고, 네트워크로 데이터를 전송하고, 세션 데이터를 저장하고, 캐싱을 구현하고, 메시지 큐 페이로드를 만들고, 요청 간에 객체 상태를 보존할 수 있게 합니다. 역직렬화하면 원래 데이터를 다시 가져와 계속 사용할 수 있습니다.
PHP은 문자열, 정수, 부동 소수점 수, 불리언, 배열, 객체 및 NULL 값을 직렬화합니다. 배열 키, 객체 속성(공개, 보호, 비공개), 중첩 구조 및 데이터 형식을 보존합니다. 하지만 데이터베이스 연결이나 파일 핸들과 같은 리소스는 직렬화할 수 없으므로 별도로 처리해야 합니다.
예. 신뢰할 수 없는 데이터를 역직렬화할 때 PHP 객체 삽입 공격이 발생할 수 있습니다. 공격자는 매직 메서드(__wakeup, __destruct)를 통해 코드 실행을 유발하는 악성 직렬화 문자열을 만들 수 있습니다. 검증 없이 사용자 입력이나 외부 데이터를 절대 역직렬화하지 마세요. 신뢰할 수 없는 데이터에는 JSON를 사용하거나 allowed_classes 제한을 적용하세요.
예. PHP은 사용자 정의 객체를 직렬화할 때 모든 속성과 값을 보존합니다. 하지만 객체를 올바르게 복원하려면 역직렬화 전에 클래스 정의를 불러와야 합니다. 오토로딩을 사용하거나 클래스 파일을 포함하거나, 사용자 정의 직렬화 동작을 위해 __sleep() 및 __wakeup() 매직 메서드를 구현하세요.
PHP serialize()은 정확한 데이터 형식, 비공개/보호 속성 및 객체 클래스 정보를 보존하지만 PHP에서만 작동합니다. JSON은 언어에 구애받지 않고 읽기 쉬우며 웹에 적합하고 모든 언어에서 작동하지만 비공개 속성을 잃고 PHP 형식을 정확히 보존하지 않습니다. PHP 전용 저장에는 serialize()를 사용하고, API 및 상호 운용성에는 JSON를 사용하세요.
PHP은 요청 간 저장을 위해 세션 데이터($_SESSION)를 자동으로 직렬화합니다. 세션에 배열이나 객체를 저장하면 PHP가 이를 파일이나 데이터베이스에 직렬화하고, 이후 페이지 로드 시 역직렬화합니다. 이를 통해 페이지 방문 간에 사용자 상태, 장바구니 및 인증 정보를 유지할 수 있습니다.
예. 직렬화된 데이터를 데이터베이스의 TEXT 또는 BLOB 열에 저장할 수 있습니다. 하지만 직렬화된 데이터는 효율적인 쿼리, 인덱싱 및 검색을 어렵게 합니다. 완전한 객체를 하나의 단위로 저장할 때는 직렬화를 사용하고, 개별 필드를 조회하거나 데이터 관계를 유지해야 할 때는 JSON 또는 정규화된 테이블을 사용하세요.
직렬화된 데이터에는 형식 접두사가 사용됩니다. s:5:"hello"(문자열), i:42(정수), a:2:{...}(배열), O:4:"User"(객체)와 같습니다. 숫자는 길이나 개수를 나타냅니다. 형식은 간결하지만 사람이 읽기 어렵습니다. 디버깅과 데이터 조작을 위해 도구에서 읽기 쉬운 JSON와 PHP 직렬화 형식 간에 변환하세요.
데이터를 역직렬화하여 구조를 검사하고, 역직렬화된 값에 print_r() 또는 var_dump()를 사용하고, 가독성을 위해 JSON으로 변환하고, 불완전한 직렬화 또는 손상 여부를 확인하고, 객체에 대한 클래스 가용성을 확인하고, 복잡한 직렬화된 구조를 시각화하고 이해하는 도구를 사용할 수 있습니다.
표준 PHP 직렬화는 클로저를 지원하지 않습니다. 이 기능을 사용하려면 Opis Closure 또는 Laravel의 SerializableClosure와 같은 패키지를 사용하세요. 객체의 일반 함수와 메서드는 클래스에 정의된 경우 직렬화할 수 있지만 익명 함수는 특별한 처리가 필요합니다.
__sleep()은 직렬화 전에 실행되어 직렬화할 속성 배열을 반환합니다(특정 데이터를 제외할 때 유용). __wakeup()은 역직렬화 후 초기화에 사용됩니다. __serialize() 및 __unserialize()(PHP 7.4+)은 더 세밀한 제어를 제공합니다. 클래스에서 사용자 정의 직렬화 동작을 구현할 때 이 메서드들을 사용하세요.
기존 PHP 데이터를 역직렬화하고 배열/stdClass 객체로 변환한 다음 JSON 인코딩하세요. 코드를 업데이트하여 serialize()/unserialize() 대신 json_encode()/json_decode()을 사용하세요. JSON은 더 안전하고 읽기 쉬우며 호환성이 좋지만, 직렬화가 제공하는 비공개 속성과 정확한 형식 보존은 유지되지 않습니다.