JSONは優れていますが、Jythonを使用してJavaのシリアル化ライブラリを利用することもできます。その利点は、クラスをシリアル化可能な形式に変換するために何もする必要がなく、文字通りシリアル化可能を実装してserialVersionUIDを追加するだけであるということです。
Jythonのヒントからコピー:
9シリアル化
Javaオブジェクトは、標準のPythonpickleおよびcPickleモジュールを使用してシリアル化することはできません。JavaオブジェクトとJythonオブジェクトはどちらも、通常のJavaシリアル化を使用してシリアル化できます。ただし、Jythonオブジェクトを逆シリアル化する場合、通常のjava.io.ObjectInputStreamクラスを使用できない場合は、次に示すように、Jython固有のorg.python.util.PythonObjectInputStreamを使用する必要があります。
import java.io as io
import org.python.util as util
class TestClass(io.Serializable):
def __init_ _(self, value=0):
self.value = value
self.message = "Serialized"
def toString(self):
return "Message: %(message)s value:
is %(value)s" % self.__dict_ _
instance = TestClass(3)
outFile = io.FileOutputStream("test.ser")
outStream = io.ObjectOutputStream(outFile)
outStream.writeObject(instance)
outFile.close( )
inFile = io.FileInputStream("test.ser")
inStream = util.PythonObjectInputStream(inFile)
readInstance = inStream.readObject( )
print readInstance.toString( )
Message: Serialized value: is 3
PythonObjectInputStreamを使用しない場合、通常のJava ObjectInputStreamは、JythonのJava継承に使用される動的にロードされたプロキシクラスを見つけて再作成するのが難しいため、ランタイムエラーが発生します。