如何在Java上通过套接字发送实体

如何在Java上通过套接字发送实体,java,json,sockets,entities,Java,Json,Sockets,Entities,我进入了一个需要一些基础设施的网络项目,我对这个项目真的不太了解,所以我在这里征求你的明智建议:) 该项目将spring用于MVC,并与另一个名为tracker的项目建立了连接,该项目由sockets制作 关键是我需要创建一个名为task by web的实体对象,这个实体应该被发送到跟踪器,在跟踪器中进行处理,第一个想法是将实体序列化发送,但看起来不是很好,因为在这个实体中有许多其他的实体在跟踪器中不需要。此外,跟踪器应该返回一些关于任务实现的反馈 我读过,用实体任务中需要的数据创建一个JSON

我进入了一个需要一些基础设施的网络项目,我对这个项目真的不太了解,所以我在这里征求你的明智建议:)

该项目将spring用于MVC,并与另一个名为tracker的项目建立了连接,该项目由sockets制作

关键是我需要创建一个名为task by web的实体对象,这个实体应该被发送到跟踪器,在跟踪器中进行处理,第一个想法是将实体序列化发送,但看起来不是很好,因为在这个实体中有许多其他的实体在跟踪器中不需要。此外,跟踪器应该返回一些关于任务实现的反馈

我读过,用实体任务中需要的数据创建一个JSON文件并将其发送到跟踪器通常是一个好主意,但我只是想确定是否还有其他可能性


提前感谢。

有很多可能性:例如JSON和XML,但序列化是最简单的。不需要创建JSON文件或使用现有实体,您可以创建一个新的、简单的JavaBean,其中只包含您真正需要的信息并发送它


当然,这里我假设“traker”应用程序也会相应开发。

有很多可能性:例如JSON和XML,但序列化是最简单的。不需要创建JSON文件或使用现有实体,您可以创建一个新的、简单的JavaBean,其中只包含您真正需要的信息并发送它


当然在这里,我假设“traker”应用程序将相应地开发。

在我看来,使用JSON而不是序列化更容易实现,但是每个字段成员都必须转换为字符串并返回

您可以用transient关键字标记不想序列化的字段


当然,另一种选择是编写自己的套接字协议更加困难。

在我看来,使用JSON而不是序列化更容易实现,但是每个字段成员都必须转换为字符串并返回

您可以用transient关键字标记不想序列化的字段


当然,另一个选择是更难编写自己的套接字协议。

有很多可能性。我认为JSON比XML更适合选择

对于JSON,您可以使用GoogleGSON()将JSON-JAVA转换为非常有用且简单的库,反之亦然

Java对象序列化是另一种可能性。要通过套接字发送java对象,可以执行以下操作:

  URL urlServlet = new URL("http://...");
  URLConnection connection = urlServlet.openConnection();

  connection.setDoInput(true);
  connection.setDoOutput(true);
  connection.setUseCaches(false);

  connection.setRequestProperty("Content-Length", 
    "512");
  connection.setRequestProperty("Content-Type", 
    "application/x-java-serialized-object");

  ObjectOutputStream output = new ObjectOutputStream(connection.getOutputStream());
  output.writeObject(getOrdenesDTO());

有很多可能性。我认为JSON比XML更适合选择

对于JSON,您可以使用GoogleGSON()将JSON-JAVA转换为非常有用且简单的库,反之亦然

Java对象序列化是另一种可能性。要通过套接字发送java对象,可以执行以下操作:

  URL urlServlet = new URL("http://...");
  URLConnection connection = urlServlet.openConnection();

  connection.setDoInput(true);
  connection.setDoOutput(true);
  connection.setUseCaches(false);

  connection.setRequestProperty("Content-Length", 
    "512");
  connection.setRequestProperty("Content-Type", 
    "application/x-java-serialized-object");

  ObjectOutputStream output = new ObjectOutputStream(connection.getOutputStream());
  output.writeObject(getOrdenesDTO());

签出签出谢谢,我想我会尝试一下JSON,因为如果有一天我想更改发送数据的项目的语言,这是一个很好的选择。当然,如果你使用JSON,你的项目会获得互操作性。谢谢,我想我会尝试一下JSON,如果有一天我想更改发送数据的项目的语言,这是一个很好的选择。