Serialize PHP => Unserialize JAVA / Serialize для php в строковом формате

У меня есть массив в php этого формата:

<?php $value = array("id" => 42, "user" => "superman"); echo serialize($value); ?> 

Сериализованный:

 a:2:{s:2:"id";i:42;s:4:"user";s:8:"superman";} 

Я получаю это в String в java. Как я могу сделать это для десериализации в java? Я знаю, что implements Serializable в java, но не работает в этом случае.

Я хочу создать объект в таком формате:

 import java.io.Serializable; public class Serial implements Serializable{ private int mId; private String mUser; public Serial(int mId, String mUser) { super(); this.mId = mId; this.mUser = mUser; } public int getId() { return mId; } public void setId(int id) { this.mId = id; } public String getUser() { return mUser; } public void setUser(String user) { this.mUser = user; } } 

После этого я хочу создать еще один раз, когда String сериализуется из объекта Java для десериализации в PHP;

Спасибо за вашу помощь.

Вы не можете изначально читать сериализованные объекты на одном языке с другим языком (у каждого языка есть свои собственные протоколы / формат сериализации, нет гарантии, что они могут читать один-другой формат), Java-сериализованные объекты сериализуются в двоичный формат и PHP, предоставленный вами текстовый формат.

Существуют библиотеки, такие как буферы протокола Google, которые вы можете использовать, они официально не поддерживают PHP, однако существуют сторонние библиотеки, которые обеспечивают поддержку протокола Buffer для PHP.

Буферы протокола – это нейтральный по отношению к платформе язык, нейтральный для платформы , расширяемый механизм для сериализации структурированных данных – думаю, XML, но меньше, быстрее и проще. Вы определяете, как вы хотите, чтобы ваши данные были структурированы один раз, затем вы можете использовать специальный сгенерированный исходный код, чтобы легко записывать и читать ваши структурированные данные в различные потоки данных и из них и использовать различные языки – Java, C ++ или Python.

Если вы не любите этого, вам нужно будет разработать собственный протокол для чтения сериализованных объектов PHP в объект Java, вы можете сделать это с помощью модифицированной библиотеки JSON, поскольку я не считаю, что s:2:"id"; из вашего примерного сериализованного объекта действует JSON. Существует библиотека для этого с использованием Java, однако формат сериализации PHP не является «безопасным», так как он может содержать нулевые значения, поэтому я бы посоветовал это сделать.

Немного поздно для вас, но может быть полезно для других (включая меня):

Вы можете проверить этот вопрос , у которого много ответов. Для тех, у кого нет времени на чтение, вот основные ссылки, которые он приводит:

1- Статический класс для PHP-де-сериализации

2- Класс Pherialize со своими классами спутников

НО, как сказал @Robadob (и все разработчики), самым надежным способом выполнения этой работы является использование стандартного формата.