# JSON 객체에서 직렬화된 PHP 객체로 변환기

다용도 PHP 직렬화 및 역직렬화 도구로 PHP에서 데이터를 손쉽게 직렬화하고 역직렬화하세요. 이 온라인 도구는 복잡한 데이터 구조를 저장 가능한 문자열로 변환하고 원래 형태로 되돌리려는 개발자에게 적합합니다. 소프트웨어를 설치하지 않고도 정확하고 효율적으로 데이터를 처리할 수 있습니다. 사용자 친화적이고 안정적인 도구로 PHP 개발 워크플로우를 개선하세요.

## PHPシリアライザーの機能

PHPシリアライザーはJSONをPHPのserialize()の文字列形式に変換し、シリアライズ済みの文字列を整形されたJSONに戻します。シリアライズ形式の文字列長はバイト数で数えるため、アクセント付き文字を含む値は文字数よりも長くなります。

シリアライズ解除でユーザー定義クラスのオブジェクトが作られることはありません。オブジェクトはクラス名を__PHP_Incomplete_Class_Nameに保持した__PHP_Incomplete_Classとして戻されるため、信頼できない入力によるコード実行を防げます。JSONオブジェクトは、キーが文字列のPHP配列になります。

## 작성 예시

### JSONをシリアライズ済み文字列に変換

a:4は4つの項目を持つ配列で、各文字列にはバイト数で長さが記録されています。

**입력**

```
{"name": "Ada", "age": 36, "admin": true, "tags": ["php", "json"]}
```

**결과**

```
a:4:{s:4:"name";s:3:"Ada";s:3:"age";i:36;s:5:"admin";b:1;s:4:"tags";a:2:{i:0;s:3:"php";i:1;s:4:"json";}}
```

### シリアライズ済み文字列からJSONへ

Zürichは6文字ですが、UTF-8では7バイトです。そのため、長さはs:7です。

**입력**

```
a:2:{s:4:"city";s:7:"Zürich";s:3:"zip";s:4:"8001";}
```

**결과**

```
{
  "city": "Zürich",
  "zip": "8001"
}
```

### シリアライズ済みオブジェクト

オブジェクトは本物のstdClassインスタンスとして再構築されません。クラス名とプロパティはデータとして表示されます。

**입력**

```
O:8:"stdClass":1:{s:2:"id";i:7;}
```

**결과**

```
{
  "__PHP_Incomplete_Class_Name": "stdClass",
  "id": 7
}
```

## シリアライズされた型コード

| 코드 | 유형 | 例 |
| --- | --- | --- |
| `N` | 널 | `N;` |
| `b` | 真偽値。trueは1、falseは0 | `b:1;` |
| `i` | 整数 | `i:36;` |
| `d` | 浮動小数点数 | `d:0.5;` |
| `s` | 文字列。長さはバイト数 | `s:3:"PHP";` |
| `a` | 配列。項目数とキーと値のペアを含む | `a:1:{i:0;s:1:"x";}` |
| `O` | オブジェクト。クラス名の長さ、クラス名、プロパティ数を含む | `O:8:"stdClass":0:{}` |

## 자주 묻는 질문

### PHP에서 데이터를 직렬화하려면 어떻게 하나요?

PHP에서 데이터를 직렬화하려면 제공된 입력란에 데이터 구조(배열, 객체 또는 스칼라 값)를 입력하고 직렬화 버튼을 클릭하세요. 이 도구는 PHP의 직렬화 프로토콜을 사용해 복잡한 데이터 구조를 저장 가능한 문자열 형식으로 변환합니다. 이렇게 생성한 표현은 파일이나 데이터베이스에 저장하거나 네트워크를 통해 전송할 수 있습니다.

### PHP에서 데이터를 역직렬화하려면 어떻게 하나요?

PHP에서 데이터를 역직렬화하려면 직렬화된 문자열(일반적으로 a:, s: 또는 O:와 같은 형식 표시자로 시작)을 입력란에 입력하고 역직렬화 버튼을 클릭하세요. 이 도구는 문자열을 원래 데이터 구조로 되돌려 직렬화 전과 똑같이 배열, 객체 및 값을 복원합니다.

### PHP에서 직렬화가 유용한 이유는 무엇인가요?

직렬화는 복잡한 데이터 구조를 저장 가능한 문자열로 변환하여 파일이나 데이터베이스에 데이터를 영구 저장하고, 네트워크로 데이터를 전송하고, 세션 데이터를 저장하고, 캐싱을 구현하고, 메시지 큐 페이로드를 만들고, 요청 간에 객체 상태를 보존할 수 있게 합니다. 역직렬화하면 원래 데이터를 다시 가져와 계속 사용할 수 있습니다.

### PHP에서 직렬화할 수 있는 데이터 유형은 무엇인가요?

PHP은 문자열, 정수, 부동 소수점 수, 불리언, 배열, 객체 및 NULL 값을 직렬화합니다. 배열 키, 객체 속성(공개, 보호, 비공개), 중첩 구조 및 데이터 형식을 보존합니다. 하지만 데이터베이스 연결이나 파일 핸들과 같은 리소스는 직렬화할 수 없으므로 별도로 처리해야 합니다.

### 데이터를 역직렬화할 때 보안을 고려해야 할 사항이 있나요?

예. 신뢰할 수 없는 데이터를 역직렬화할 때 PHP 객체 삽입 공격이 발생할 수 있습니다. 공격자는 매직 메서드(__wakeup, __destruct)를 통해 코드 실행을 유발하는 악성 직렬화 문자열을 만들 수 있습니다. 검증 없이 사용자 입력이나 외부 데이터를 절대 역직렬화하지 마세요. 신뢰할 수 없는 데이터에는 JSON를 사용하거나 allowed_classes 제한을 적용하세요.

### 사용자 지정 개체를 직렬화 및 역직렬화할 수 있나요?

예. PHP은 사용자 정의 객체를 직렬화할 때 모든 속성과 값을 보존합니다. 하지만 객체를 올바르게 복원하려면 역직렬화 전에 클래스 정의를 불러와야 합니다. 오토로딩을 사용하거나 클래스 파일을 포함하거나, 사용자 정의 직렬화 동작을 위해 __sleep() 및 __wakeup() 매직 메서드를 구현하세요.

### serialize()와 JSON의 차이는 무엇인가요?

PHP serialize()은 정확한 데이터 형식, 비공개/보호 속성 및 객체 클래스 정보를 보존하지만 PHP에서만 작동합니다. JSON은 언어에 구애받지 않고 읽기 쉬우며 웹에 적합하고 모든 언어에서 작동하지만 비공개 속성을 잃고 PHP 형식을 정확히 보존하지 않습니다. PHP 전용 저장에는 serialize()를 사용하고, API 및 상호 운용성에는 JSON를 사용하세요.

### 세션 데이터에 직렬화를 어떻게 사용하나요?

PHP은 요청 간 저장을 위해 세션 데이터($_SESSION)를 자동으로 직렬화합니다. 세션에 배열이나 객체를 저장하면 PHP가 이를 파일이나 데이터베이스에 직렬화하고, 이후 페이지 로드 시 역직렬화합니다. 이를 통해 페이지 방문 간에 사용자 상태, 장바구니 및 인증 정보를 유지할 수 있습니다.

### 직렬화된 데이터를 데이터베이스에 저장할 수 있나요?

예. 직렬화된 데이터를 데이터베이스의 TEXT 또는 BLOB 열에 저장할 수 있습니다. 하지만 직렬화된 데이터는 효율적인 쿼리, 인덱싱 및 검색을 어렵게 합니다. 완전한 객체를 하나의 단위로 저장할 때는 직렬화를 사용하고, 개별 필드를 조회하거나 데이터 관계를 유지해야 할 때는 JSON 또는 정규화된 테이블을 사용하세요.

### 직렬화된 PHP 데이터는 어떤 모습일까요?

직렬화된 데이터에는 형식 접두사가 사용됩니다. 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+)은 더 세밀한 제어를 제공합니다. 클래스에서 사용자 정의 직렬화 동작을 구현할 때 이 메서드들을 사용하세요.

### 직렬화된 데이터에서 JSON으로 마이그레이션하려면 어떻게 해야 하나요?

기존 PHP 데이터를 역직렬화하고 배열/stdClass 객체로 변환한 다음 JSON 인코딩하세요. 코드를 업데이트하여 serialize()/unserialize() 대신 json_encode()/json_decode()을 사용하세요. JSON은 더 안전하고 읽기 쉬우며 호환성이 좋지만, 직렬화가 제공하는 비공개 속성과 정확한 형식 보존은 유지되지 않습니다.

여기에 광고를 게재하시겠어요?

[이메일 보내기](mailto:hi@dennn.is?subject=OneClick%20Pro%20%EA%B4%91%EA%B3%A0%20%EB%AC%B8%EC%9D%98)

[광고 WordPress을 위한 에이전트 지원 플러그인 모음입니다.](https://sleekwp.com/?ref=oneclickpro)
