gpt4 book ai didi

java - 如何将 Java 对象的实例从 Python 传递到 Java 应用程序

转载 作者:行者123 更新时间:2023-12-02 02:08:31 25 4
gpt4 key购买 nike

我有一个 Java 应用程序,它有一个套接字监听器,并通过特定端口(例如 6500)监听 TCP 事件。收到数据后,它将其类型转换为特定的 java 对象 - EventObj,该对象具有某些字段。例如 - EventObj.java

public class EventObj {
private String firstName;
private String lastName ;
// setters and getters
}

这里是通过套接字接收数据并将其类型转换为 EventObj 的代码片段 -

    Socket clientSocket = null;
while (keepRunning) {
try {
clientSocket = null;
//wait for an incoming call
clientSocket = serverSocket.accept();
} catch (IOException e) {
// log error
}

if(clientSocket == null){
continue;
}

ObjectOutputStream objectOutputStream = null;
ObjectInputStream objectInputStream = null;
EventObj event = null;
try{
objectInputStream = new
ObjectInputStream(clientSocket.getInputStream());
objectOutputStream = new ObjectOutputStream(clientSocket.getOutputStream());

event = (EventObj) objectInputStream.readObject();
/// other parts of the code
}
//// other parts of the code
}

如果我要从 Python 通过套接字连接发送消息,如何在 Python 中创建 EventObj 实例并将其发送到我的 Java 应用程序,以便序列化不会失败。

这是我的 Python 代码 -

#!/usr/bin/env python

import socket

HOST = "localhost"
PORT = 6502

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((HOST, PORT))

sock.sendall("I NEED TO SEND MY SERIALIZED OBJECT SO JAVA UNDERSTANDS IT")

有什么建议吗?

最佳答案

如果您确实想实现它,这里是规范...

https://docs.oracle.com/javase/8/docs/platform/serialization/spec/protocol.html

我建议不要使用java的对象序列化。

JSON 是此类事物的流行语言。

Python有json包Java 有 Jackson 的 ObjectMapper 用于读取 json。

如果你真的想变得更奇特,你可以将序列化的第一级作为 bean 属性的名称并反射性地设置值:

Using reflection to set an object property

关于java - 如何将 Java 对象的实例从 Python 传递到 Java 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50382488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com