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

如何将Java对象的实例从Python传递到Java应用程序,java,python,sockets,Java,Python,Sockets,我有一个Java应用程序,它有一个套接字侦听器,并通过特定端口(比如6500)侦听TCP事件。当接收到数据时,它将数据类型转换为一个特定的java对象——EventObj,该对象具有特定的字段。 例如-EventObj.java public class EventObj { private String firstName; private String lastName ; // setters and getters } 下面是通过套接字接收数据并对其进行类型转换的代

我有一个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")

有什么建议吗?

如果您真的想实现它,这里是规范

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

JSON是这类事情的常用语言

Python有json包 Java有Jackson的ObjectMapper来读取json

如果您真的想变得有趣,可以将序列化的第一级设置为bean属性的名称,并反射地设置值:


如果您真的想实现它,这里是规范

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

JSON是这类事情的常用语言

Python有json包 Java有Jackson的ObjectMapper来读取json

如果您真的想变得有趣,可以将序列化的第一级设置为bean属性的名称,并反射地设置值:


我理解使用JSON很容易做到这一点(问题中应该提到),但幸运的是,由于某些限制,我无法更改服务器端代码。我理解使用JSON很容易做到这一点(问题中应该提到),但幸运的是,由于某些限制,我无法更改服务器端代码。