# Конвертер Объект JSON в Сериализованный объект PHP

Легко сериализуйте и десериализуйте данные в PHP с помощью нашего универсального инструмента PHP сериализации и десериализации. Эта онлайн-утилита подойдет разработчикам, которым нужно преобразовывать сложные структуры данных в строки для хранения, а затем восстанавливать их в исходном виде. Обрабатывайте данные точно и эффективно без установки программ. Упростите рабочий процесс разработки на PHP с помощью этого удобного и надежного инструмента.

## Что делает PHP Serializer

PHP Serializer преобразует JSON в строковый формат serialize() из PHP и преобразует сериализованные строки обратно в форматированный JSON. В сериализованной форме длина строк считается в байтах, поэтому значение с буквами с диакритическими знаками имеет большую длину, чем количество символов в нём.

Десериализация никогда не создаёт объекты ваших классов: вместо этого объект возвращается как __PHP_Incomplete_Class, а имя его класса сохраняется в __PHP_Incomplete_Class_Name. Это не позволяет недоверенным входным данным запускать код. Объекты JSON преобразуются в PHP массивы со строковыми ключами.

## Примеры с решениями

### JSON в сериализованную строку

a: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 букв, но 7 байтов в UTF-8, поэтому его длина равна 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` | Логическое значение: 1 для true и 0 для false | `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, введите структуру данных (массив, объект или скалярное значение) в соответствующее поле и нажмите кнопку «Serialize». Инструмент преобразует сложные структуры данных в строковый формат для хранения, используя протокол сериализации PHP. Полученное представление можно сохранить в файле или базе данных либо передать по сети.

### Как десериализовать данные в PHP?

Чтобы десериализовать данные в PHP, введите сериализованную строку (обычно она начинается с обозначений формата, например a:, s: или O:) в соответствующее поле и нажмите кнопку «Deserialize». Инструмент восстановит исходную структуру данных, включая массивы, объекты и значения.

### Почему сериализация полезна в PHP?

Сериализация преобразует сложные структуры данных в строки для хранения. Это позволяет сохранять данные в файлах и базах данных, передавать их по сети, хранить данные сеансов, использовать механизмы кэширования и передавать сообщения через очереди, а также сохранять состояние объектов между запросами. Десериализация восстанавливает исходные данные для дальнейшего использования.

### Какие типы данных можно сериализовать в PHP?

PHP сериализует строки, целые числа, числа с плавающей точкой, логические значения, массивы, объекты и значения NULL. При этом сохраняются ключи массивов, свойства объектов (public, protected, private), вложенные структуры и типы данных. Однако ресурсы, например подключения к базам данных или файловые дескрипторы, сериализовать нельзя — для них нужна особая обработка.

### Существуют ли какие-либо соображения безопасности при десериализации данных?

Да, при десериализации недоверенных данных возможны атаки с внедрением объектов PHP. Злоумышленники могут создавать вредоносные сериализованные строки, которые запускают код через магические методы (__wakeup, __destruct). Никогда не десериализуйте пользовательский ввод или внешние данные без проверки. Для недоверенных данных используйте JSON или задайте ограничение allowed_classes.

### Можно ли сериализовать и десериализовать пользовательские объекты?

Да, PHP сериализует пользовательские объекты, сохраняя все свойства и их значения. Чтобы правильно восстановить объекты, перед десериализацией необходимо загрузить определения классов. Используйте автозагрузку, подключите файлы классов или реализуйте магические методы __sleep() и __wakeup() для настройки сериализации.

### Чем отличаются serialize() и JSON?

PHP serialize() сохраняет точные типы данных, приватные и защищенные свойства, а также сведения о классе объекта, но работает только в PHP. JSON не зависит от языка, удобен для чтения и веба, работает в любых языках, но не сохраняет приватные свойства и точные типы PHP. Используйте serialize() для хранения только в PHP, а JSON — для API и совместимости между системами.

### Как сериализовать данные сеанса?

PHP автоматически сериализует данные сеанса ($_SESSION) для хранения между запросами. Когда вы сохраняете в сеансе массивы или объекты, PHP записывает их в файлы или базы данных, а при последующей загрузке страницы десериализует. Это позволяет сохранять состояние пользователя, содержимое корзины и данные аутентификации между посещениями страниц.

### Можно ли хранить сериализованные данные в базах данных?

Да, сериализованные данные можно хранить в столбцах базы данных типа TEXT или BLOB. Однако такой формат не позволяет эффективно выполнять запросы, индексировать и искать данные. Используйте сериализацию для хранения целых объектов как отдельных единиц, а для запросов к отдельным полям и связям между данными предпочитайте JSON или нормализованные таблицы.

### Как выглядят сериализованные данные PHP?

Сериализованные данные имеют префиксы формата: s:5:"hello" (строка), i:42 (целое число), a:2:{...} (массив), O:4:"User" (объект). Числа обозначают длину или количество элементов. Формат компактен, но его трудно читать. Используйте наш инструмент, чтобы преобразовывать сериализованные данные в формате PHP в удобный для чтения JSON и обратно для отладки и обработки данных.

### Как отладить сериализованные данные?

Десериализуйте данные, чтобы проверить их структуру, используйте print_r() или var_dump() для десериализованных значений, преобразуйте в JSON для удобства чтения, проверьте неполную сериализацию или повреждения, проверьте доступность классов для объектов, а также используйте наш инструмент для визуализации и понимания сложных сериализованных структур.

### Можно ли сериализовать закрытые или анонимные функции?

Стандартная сериализация PHP не поддерживает замыкания. Для этого используйте пакеты, например Opis Closure или SerializableClosure из Laravel. Обычные функции и методы объектов можно сериализовать, если они определены в классах, а анонимные функции требуют специальной обработки.

### Что такое магические методы сериализации?

__sleep() вызывается перед сериализацией и возвращает массив свойств для сериализации (это удобно, если нужно исключить некоторые данные). __wakeup() вызывается после десериализации для инициализации. __serialize() и __unserialize() (начиная с PHP 7.4) дают больше контроля. Реализуйте эти методы в классах, чтобы настроить сериализацию.

### Как перейти от сериализованных данных к JSON?

Десериализуйте существующие данные PHP и преобразуйте их в массивы или объекты stdClass, затем закодируйте с помощью JSON. Обновите код, заменив serialize()/unserialize() на json_encode()/json_decode(). JSON безопаснее, удобнее для чтения и совместимее, но при этом не сохраняются приватные свойства и точные типы, которые сохраняет сериализация.

Ваша реклама здесь?

[Напишите нам по электронной почте](mailto:hi@dennn.is?subject=%D0%A0%D0%B5%D0%BA%D0%BB%D0%B0%D0%BC%D0%B0%20%D0%BD%D0%B0%20OneClick%20Pro)

[Реклама Набор плагинов для работы агентов с WordPress.](https://sleekwp.com/?ref=oneclickpro)
