【问题标题】:Java - automatically set all null String to empty StringJava - 自动将所有空字符串设置为空字符串
【发布时间】: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 库。

标签: java string


【解决方案1】:

您只需为 int 类型输入编写单独的代码。
尝试对(int 和 String)类型的请求使用一些过滤条件。

int 不能转换为字符串。字符串优先级高于 int。

【讨论】:

  • 您好,您能详细说明一下吗?您的意思是在 Eclipse 模板中编写单独的代码吗?有示例代码或步骤吗?
  • 什么是“字符串优先级”?
  • 这里优先,我的意思是说String是对象类型,int是原始类型。所以 int 不能转换为 String。
猜你喜欢
  • 2012-01-25
  • 2017-11-05
  • 1970-01-01
  • 2014-11-12
  • 2018-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多