6
votes

La désérialisation de Pathon Pickle de PHP?

Je dois désérialiser un dictionnaire em> dans PHP qui a été sérialisé en utilisant cpickle dans python em>.

Dans ce cas particulier, je pourrais probablement Regexp le souhaité Information em>, mais y a-t-il une meilleure façon? Toute extension pour PHP qui me permettrait de désérialiser plus de manière nativement tout le dictionnaire? P>

Apparemment, il est sérialisé dans Python, comme celui-ci: P>

import cPickle as pickle

data = { 'user_id' : 5 }
pickled = pickle.dumps(data)
print pickled


2 commentaires

Vous avez mentionné la sérialisation n'est pas sous votre contrôle. Comment recevez-vous ces données marinées? Un fichier local?


Il provient de la base de données à Django, c'est Session_Data dans la table de session Django. Je finis probablement à écrire de la sessionMiddleware pour sérialiser la session_data comme JSON. Je viens de souhaiter que je n'ai pas eu à modifier l'application Django pour cela.


4 Réponses :


7
votes

Si vous souhaitez partager des objets de données entre les programmes écrits dans différentes langues, il pourrait être plus facile de sérialiser / désérialiser à l'aide de quelque chose comme Json à la place. La plupart des principales langues de programmation ont une bibliothèque JSON.


3 commentaires

Python 2.6+ a-t-il intégré et il y a SimpleJson pour des versions antérieures.


Bien qu'une bonne idée, la partie de sérialisation ne soit pas sous mon contrôle.


J'ai d'abord pensé que je ne veux pas pirater l'application Django, mais encore une fois, cela pourrait être une solution plus rapide. Voici donc mon simple JSON SessionStore pour Django



5
votes

Pouvez-vous faire un appel système? Vous pouvez utiliser un script Python comme celui-ci pour convertir les données de cornichon en Json: xxx

de cette façon, si vous obtenez les données d'un fichier, vous pouvez faire quelque chose comme ceci: < Pré> xxx

ou si vous souhaitez l'enregistrer dans un fichier ceci: xxx

tout le code ci-dessus n'est probablement pas parfait (i ' M Pas de développeur PHP), mais quelque chose comme ce travail pour vous?


0 commentaires

1
votes

Si le cornichon est créé par le code que vous avez montré, il ne contiendra pas de données binaires - à moins que vous n'appeliez de nouvelles lignes «Données binaires». Voir The Python Docs . Le code suivant a été exécuté par Python 2.6. XXX

Lequel des éléments ci-dessus ressemble le plus à ce que vous voyez? Pouvez-vous poster le contenu du fichier mariné comme affiché par un éditeur hexagonal / Dumper ou tout ce qui est l'équivalent PHP de la REVI de Python ()? Combien d'articles dans un dictionnaire typique? Quels types de données autres que «entier» et «chaîne d'octets de 8 bits» (quel codage?)?


0 commentaires

1
votes

Je sais que c'est ancien, mais j'ai juste besoin de le faire pour une application Django 1.3 (vers 2012) et a trouvé ceci:

https://github.com/terryf/phpickle

Donc, juste au cas où, un jour, quelqu'un d'autre a besoin de la même solution.


0 commentaires