Unserialize dans Java un objet php sérialisé
Personne ne sait si c'est possible, en fait, si ça a été fait, pour sérialiser un objet en php et unserialize en Java (java-php communication). Peut-être un adaptateur sera nécessaire.
Qu'en pensez-vous?
Grâce
source d'informationauteur Hypnus
Vous devez vous connecter pour publier un commentaire.
Il est
sérialisé-php-parser
qui est une implémentation de Java qui peut analyser php-objets sérialisés. En général, si vous avez le choix, je ne recommanderais pas de php-sérialisé comme un format d'échange, car il n'est pas ascii-coffre-fort (Il contient des octets nuls). Aller avec un format xml ou json au lieu. Si vous avez besoin d'un peu de type de l'information, xmlrpc est un bon choix. Il a de bonnes implémentations pour php et Java.PHP et Java utilisent leurs propres (évidemment différent) sérialisation des régimes. Vous pouvez, toutefois, utiliser un format d'échange à la fois lire et écrire.
Les deux exemples évidents sont XML et JSON.
Il y a d'autres cependant, comme Google Protocol Buffers.
Un autre projet Java pour fonctionner avec le PHP format de sérialisation est Pherialize.
Disons que vous êtes de la sérialisation d'un tableau comme ceci:
Alors vous pouvez unserialize en Java avec Pherialize comme ceci:
Théoriquement, il est certainement possible. C'est juste octets après tout, et ils peuvent être analysés. Bien sûr, l'objet désérialisé ne contiendra que les données, les méthodes de PHP. Si vous voulez, il vous faudrait réécrire le comportement des classes Java qui correspondent directement avec les classes PHP.
Dans la pratique, le principal problème semble être que le PHP format de sérialisation ne semble pas être formellement spécifié - au moins il n'y a pas de lien vers une spécification dans le manuel.
De sorte que vous pourriez avoir à creuser dans le code pour comprendre le format.
Dans l'ensemble, il sonne comme il serait beaucoup plus facile et plus stable pour utiliser quelque chose comme la sérialisation XML - je suis sûr que les deux langues ont des bibliothèques pour faciliter cette.
La JSON format serait un bon endroit pour commencer. Il existe des implémentations pour JavaPHP et de nombreuses autres langues.
Tout d'abord basé sur le javascript object notation littérale,
JSON prouvé pratique pour la légèreté et le transfert de données entre tous les types de systèmes.
ajouter dans pom.xml
ensuite dans le code à utiliser
Vous pouvez faire en quelque sorte l'utilisation de PHP var_export() fonction qui retourne un parseable chaîne de la représentation de l'objet à sérialiser.
Je me souviens d'un extrait de code pour Drupal (CMS PHP) où cette fonctionnalité a été nécessaire. Viens de le trouver, afin de prendre un coup d'oeil à Sérialisé drupal node objets java (fonctionne avec n'importe quel PHP objet sérialisé).
Peut-être que vous pouvez l'utiliser. Je ne sais pas si il y a des problèmes avec les nouvelles versions de PHP.
Noter qu'il y a un Java mise en oeuvre de PHP. Si vous peut être en mesure de serialise l'objet et de le passer à votre Java-PHP exemple, deserialise puis appel dans votre infrastructure Java.
C'est tous les sons un peu de désordre impie, mais peut-être intéressant de regarder!
Utiliser les Services Web (REST, RPC, SOAP) ou de toute autre solution de stockage de texte simple qui va vous permettre de lire/reconstruire les données à partir de Java.
De la sérialisation d'un objet en PHP va vider les propriétés de l'objet. La chaîne résultante n'est pas très compliqué.
Résultats dans:
La chaîne identifie les types de données, tableau de longueurs, les indices de tableau et les valeurs, les longueurs de chaîne... de Ne pas prendre trop d'effort, rétro-conception et de venir avec votre propre parser, je pense.
Vous pourriez aussi être intéressés par l'utilisation de PHP/Java bridge (http://php-java-bridge.sourceforge.net/). Il a son propre protocole. Dans leur site dit que c'est une mise en œuvre rapide de pont.
Comme les réponses précédentes ont mentionné, je voudrais éviter de PHP sérialisation d'un objet si possible. L'utilisation de JSON (qui est en fait plus rapide que la fonction serialize() en PHP), d'épargne ou tout autre format qui est plus universel.
Si vous n'avez pas le choix, j'ai travaillé sur un Jackson Module pour permettre la lecture et de l'écriture sérialisé PHP à partir de Java. Jackson est un grand parser JSON et depuis PHP format de sérialisation est assez similaire, il semblait comme un bon ajustement. Ce n'est pas tout à fait complète (l'écriture est toujours un travail en cours).
Essayer xstream (convertit les objets Java en XML lisible par) pour sérialiser et puis écrire votre propre code PHP pour désérialiser.
Un meilleur choix est d'analyser php chaîne sérialisée de JSONArray, ce repo (https://github.com/superalsrk/PhpSerialization) peut vous aider à