gpt4 book ai didi

Java:从 JSON 创建 POJO 的最佳实践

转载 作者:太空宇宙 更新时间:2023-11-04 10:53:31 24 4
gpt4 key购买 nike

我正在研究几年前编写的代码。它用 JSON 构建 POJO。 JSON 有一个 statusType 字段。所有其他字段的值取决于 statusType 字段。如果statusTypeSUCCESS,则填充字段successCodetotalValueconcession等,另一方面,如果为FAILURE,则填充字段errorCodeexceptionTyperetryCounts

{
"statusType": "SUCCESS",
"successCode": "20.304",
"total": 1000
}

{
"statusType": "FAILED",
"errorCode": "50.31",
"retryCounts": 2
}

POJO 定义如下:

public class JsonPOJO {
public String statusType;
public String successCode;
public int retryCounts;
public int total;
public String errorCode;
}

客户端代码如下:

JsonPOJO pojo = buildPojo();
if (pojo.getStatusCode.equals(“SUCCESS”)) {
String successCode = pojo.getSuccessCode();
} else {
String errorCode = pojo.getErrorCode();
}

以上代码分散在各处(大约 10 个地方)。很快,我们将获得另一个状态代码 "IN_PROGRESS",它将在 JSON 中引入更多字段,然后 POJO 将有更多字段,因此在检查 statusType 的代码中将有更多 if/else 语句。我不想走这条路。我想优雅地重构代码,这样如果我得到另一个状态代码(例如,“SUSPENDED”),我不需要再次触及整个代码库。

一般来说,我找不到(也许我的谷歌搜索技能很糟糕)任何模式来处理这种情况,因此我正在向这里的专家寻求意见/想法。

最佳答案

仅添加新状态代码并不会添加更多字段。如果添加更多JSON,则需要更新Java,否则无法获取新字段。

我知道 Jackson 可以选择将所有额外的 JSON 值存储到 Hashmap 中。我对 Gson 的使用还不够多,还没有看到这个功能。

但是,您也可以忘记自己编写 Java 并使用 Maven plugin只需从 JSON 模式定义生成类

关于Java:从 JSON 创建 POJO 的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47545816/

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