gpt4 book ai didi

java - Gson - 避免每个 Action 有多个类

转载 作者:行者123 更新时间:2023-12-02 11:58:59 26 4
gpt4 key购买 nike

我正在开发一个使用 JS、HTML5 websockets 和 Java 作为后端的网页游戏。我正在使用 Gson 来序列化和反序列化 json。

我创建了两个类,Message 和 Data 来生成下面的 JSON 字符串:

{ "message": setupGame, "data": {"width": 800, height: 800, "username": player1, "Ball": null }

消息类别:

public class Message {

private String message;
private Data data;

public Message(String message, Data data) {
this.message = message;
this.data = data;
}

数据类:

public class Data {

private int width;
private int height;
private String username;
private Ball ball;

public Data(int width, int height, String username) {
this.width = width;
this.height = height;
this.username = username;
}

public Data(Ball ball) {
this.ball = ball;
}

正如您在 setupGame 的 json 字符串中看到的,“Ball”按预期为 null。我想实现下面的json字符串:

设置游戏:

{ "message": setupGame, "data": {"width": 800, height: 800, "username": player1 }

游戏更新:

{ "message": gameUpdate, "Ball": { "x": 600, "y":400 } }

我想为每个操作创建 2 个类,例如:SetupGameMessage、SetupGameData、GameUpdateMessage、GameUpdateData。但这需要我为我需要的所有 json 字符串创建 10 多个类。

我想知道是否有更好的方法来做到这一点,以便使代码更易于维护并防止所有这些单独的类(每个操作的消息和数据)。

最佳答案

如果您的使用者是像 JavaScript 这样的非严格类型语言,您可以创建一个通用的请求/响应对象,只需一个“int code; String Payload”元组,并将您的服务层 POJO 序列化(反)序列化为一个 JSON 字符串并将其填充到“有效负载”中。

不过这有点麻烦,所以我通常会花精力为每个特定端点创建特定的、类型化的请求/响应对。这有利于单元测试,并避免尝试创建一个“为所有端点做所有事情”的 POJO 的问题,这在大多数情况下可能是一个非常糟糕的主意。

查看 google 的 AutoValue project - 当您盯着创建一堆类的桶时,几乎不需要用 Java 编写 POJO 的所有痛苦。

关于java - Gson - 避免每个 Action 有多个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47397270/

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