【发布时间】:2016-01-31 22:18:06
【问题描述】:
我的程序从外部来源获取数据并将其设置为我自己创建的 POJO 类。一些外部数据返回 null,而另一些则返回空字符串。外部数据有一些不一致,这就是为什么我想规范这部分程序
我正在使用 java jersey 创建一个 web 服务,使用 Google Gson 将这些 POJO 类转换为 json。如果 String 值为 null,gson 不会将成员变量设置为返回的 json 字符串。这会使使用 web 服务的开发人员感到困惑,因为某些记录不会有特定的变量。我可以在每个 pojo setter 中编写一些代码来检查 null 并将其设置为空字符串。但我将介绍样板代码
在 Eclipse 中,我尝试使用代码模板在 setter 中检查空字符串并将其转换为空字符串。
if (${param} instanceof String)
${field} = (${param} == null ? "" : ${param});
else
${field} = ${param};
但是,如果输入类型是 int,这将不起作用。
我可以为字符串输入自定义代码模板吗? 还有其他方法可以自动执行此操作吗?
【问题讨论】:
-
这听起来像是一个全局设置的糟糕主意。 为什么你想用空字符串替换空值,特别是而不是使用
Optional? -
您根本不想这样做。空行和文件结尾有很大区别。
-
一个空的 JSON 值比完全省略该属性更令人困惑且效率更低,这就是 GSON 的行为方式的原因。如果 String 确实有默认值,则在 POJO 类中设置该值。
-
您好,我在 POJO 类的声明过程中确实为成员变量初始化了一个默认值。我的程序从外部源获取数据并将其设置为我自己创建的 POJO 类。一些外部数据返回 null,而另一些则返回空字符串。外部数据有一些不一致,这就是为什么我要标准化这部分程序
-
您应该让 GSON 在 JSON 中序列化
null值,而不是在您的代码中提供这种解决方法。如果这不可能(我强烈怀疑),您可能应该考虑使用 Jackson 或其他一些 JSON 库。