Ist es eine Bibliothek zu Deserialisieren mit python die Serialisierung mit java
Gibt es eine Bibliothek zu Deserialisieren mit python die Serialisierung mit java?
- Ist deine Frage bezüglich java.io.Serializable-Protokoll oder einen anderen Mechanismus der Serialisierung?
- Ich habe keine Kontrolle über die Serialisierung. Die Serialisierung erfolgt durch java.io.Serialisierung. Ich will nicht von jython
Du musst angemeldet sein, um einen Kommentar abzugeben.
Java serialisieren ist eine Darstellung der Klassen - /Daten-Strukturen und eng gebunden an die virtuelle Maschine. Folglich, die schwierig zu übersetzen, um die Python-Welt.
Hier ist ein sehr, sehr, sehr grobe Umsetzung, benötigt keine Importe. Das knifflige dabei ist, dass einige Klassen haben eigene serialisierungsprogramme, die verlangen, den original-code zu Deserialisieren. Auch meine bestimmten Datei war gzip würde, obwohl ich gar keinen code für, die. Ich habe diese zwei Seiten zur Referenz:
http://www.javaworld.com/community/node/2915
http://docs.oracle.com/javase/7/docs/platform/serialization/spec/protocol.html
objs.append(parse_obj(''))
=>objs.append(parse_obj())
). Ich habe bearbeitet Ihre Antwort zu verbessern, und auch um es wie stdin=>stdout-filter standardmäßig aktiviert.Java binäre Serialisierung ist wirklich entworfen, um mit Java. Um es in der Python-Sie müsste alle relevanten Java-Klassen zur Einsichtnahme zur Verfügung und erstellen von Python-Objekten, entsprechend wäre es ziemlich grässlich und zerbrechlich.
Du bist besser dran mit einem cross-Plattform-Serialisierung-format wie " Thrift, Protocol Buffers, JSON oder XML. Wenn Sie nicht ändern können, die Serialisierung format verwendet wird, in Java-code, ich würde vorschlagen, Sie neu zu schreiben Java-code, die deserialisiert aus dem Binär-format und dann reserializes, um eine cross-Plattform-format.
Ihnen nicht sagen, ob Sie haben die Kontrolle über die Serialisierung der Daten oder nicht, aber wenn Sie das tun, JSON scheint ein nettes format ist cross-Plattform und hat eine gute balance zwischen Klarschrift und maschinenlesbar. Für java und verteilt mit python.
Wenn ich du wäre, würde ich die Daten Lesen mit Jython, und entweder reserialize es mit
pickle
( so dass man es Lesen kann von der Python ), oder in einer Sprache, die neutralen format, wie XML.Wenn Sie mit Java-Klassen, die ich dann gar nicht wissen, was es bedeuten würde, zu Deserialisieren einer Java-Klasse in eine Python-Umgebung. Wenn Sie nur einfache primitive (ints, floats, strings), dann wäre es wahrscheinlich nicht allzu schwer zu bauen ist eine Python-Bibliothek, die könnte Deserialisieren von Java-format.
Aber wie schon andere gesagt haben, gibt es bessere cross-Plattform-Lösungen.
Eine andere Möglichkeit ist die Verwendung Sicht Broker von Twisted. Ihre ist eine Die Java-Implementierung. Wenn Sie nur serialisieren/deserialisation können Sie nur verwenden, Banane (Protokoll) oder Jelly (Persistenz) direkt. Jelly ist ein S-Ausdruck-basierter Persistenz von Objekten.