PythonでJavaオブジェクトをデシリアライズするには、どうすればいいですか?
PythonでJavaオブジェクトを逆シリアル化するには、まずJavaオブジェクトをバイトストリームとしてシリアル化する必要があります。その後、Pythonのpickleモジュールを使用して逆シリアル化することができます。
Javaでオブジェクトをバイトストリームにシリアル化し、それをPythonでpickleモジュールを使ってデシリアライズする方法を示す例が以下にあります。
Javaのコード(オブジェクトをバイトストリームにシリアル化する):
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
public class Person implements Serializable {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public static void main(String[] args) {
Person person = new Person("John", 30);
try {
FileOutputStream fileOut = new FileOutputStream("person.ser");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(person);
out.close();
fileOut.close();
System.out.println("Serialized data is saved in person.ser");
} catch (Exception e) {
e.printStackTrace();
}
}
}
上記のJavaコードを実行すると、Personオブジェクトをシリアル化したperson.serというファイルが生成されます。
Pythonスクリプト(Javaオブジェクトの逆シリアル化):
import pickle
with open("person.ser", "rb") as file:
person = pickle.load(file)
print(person.name) # 输出:John
print(person.age) # 输出:30
Pythonで、pickleモジュールのload()関数を使用すると、バイト列から逆シリアル化されたオブジェクトをロードすることができます。open()関数にバイト列のファイル名を渡し、pickle.load()を使用してそのファイルを読み込み、逆シリアル化されたオブジェクトを返すことができます。
Pythonコードを実行する前に、PersonオブジェクトをJavaコードでシリアル化し、person.serファイルを生成してください。