Как декодировать (разсериализовать) данные, полученные из Python?

Как получить читаемые данные из Redis, которые были записаны скриптом на Python, используя PHP?
Изображение к вопросу
  • 29 октября 2023 г. 10:37
Ответы на вопрос 2
1. Декодирование данных, полученных из Python:

Если данные были сериализованы в Python с использованием модуля `pickle` или `json`, их можно декодировать следующим образом:

- Если данные были сериализованы с использованием `pickle`, используйте функцию `pickle.loads()` для декодирования:

```python
import pickle

data = b'\x80\x03X\x05\x00\x00\x00Helloq\x00.'
decoded_data = pickle.loads(data)
print(decoded_data)
```

- Если данные были сериализованы с использованием `json`, используйте функцию `json.loads()` для декодирования:

```python
import json

data = '{"name": "John", "age": 30}'
decoded_data = json.loads(data)
print(decoded_data)
```

2. Получение читаемых данных из Redis, записанных в Python, с использованием PHP:

Для получения данных из Redis в формате, записанном с использованием Python, сначала необходимо установить расширение Redis для PHP. Например, можно использовать pecl:

```
pecl install redis
```

После установки расширения Redis, вы можете подключиться к Redis-серверу и получить данные, как сырую строку, а затем декодировать ее в PHP.

```php
<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

$data = $redis->get('my_key');

// Декодирование данных в PHP-массив
$decoded_data = json_decode($data, true);
print_r($decoded_data);
?>
```

Этот код подключается к локальному Redis-серверу на порту 6379, получает значение для ключа "my_key" и декодирует его в ассоциативный массив в PHP с использованием функции `json_decode()`. Если данные были сериализованы в Python с использованием другого метода (например, `pickle`), вам придется использовать соответствующие функции в PHP для декодирования этих данных.
Ищите десериализатор для PHP, поддерживающий формат Pickle, если не можете изменить сериализатор. Или можете написать свой собственный десериализатор.
Похожие вопросы