gpt4 book ai didi

java - 如何创建注释以格式化金额值

转载 作者:行者123 更新时间:2023-12-01 13:17:48 25 4
gpt4 key购买 nike

所以我现在正在研究一个解决方案,其中我们有两个要求:

  1. 以连字符形式格式化 SSN/电话号码,否则目前显示没有它。
  2. 将金额字段设置为“$0.00”格式。

目前我们已经编写了方法formatAsHyphen和formatAmount,如下所示:

/**
* This method converts the given string into US format SSN / Telephone number
* @param valueToFormat
* @param fieldToFormat , It should be either 'S' for SSN and 'T' for Mobile Number
* @return
*/
public String formatWithHyphen (String valueToFormat, String fieldToFormat) {
if(valueToFormat != null && valueToFormat.length() > 1) {
StringBuilder formattedValue = new StringBuilder(valueToFormat);
if(fieldToFormat.equalsIgnoreCase("S")) {

//format as SSN

formattedValue = formattedValue.insert(3, '-').insert(6, '-');

} else if(fieldToFormat.equalsIgnoreCase("T")) {

//format as telephone number
formattedValue = formattedValue.insert(3, '-').insert(7, '-');
}

return formattedValue.toString();
}
else {
return null;
}
}

/**
* This method converts a given amount string to a US $ formatted amount.
*
* @param amountToFormat
* @return
*/
public String formatAmount(String amountToFormat) {

try {
if(amountToFormat!=null && amountToFormat.length() > 0) {
Locale locale = new Locale("en", "US");
NumberFormat formatter = NumberFormat.getCurrencyInstance(locale);
return formatter.format(Double.parseDouble(amountToFormat));
}
else {
return null;
}

} catch (NumberFormatException nfe) {
nfe.printStackTrace();
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
}

return null;

}

现在的问题是:

  1. 有多个 pojo 类(TempAssist、SuppNutrition、ChildCare 等),其字段与金额和 SSN/电话号码

  2. 当我们从数据库中获取这些字段时,首先,未格式化的数据是 在相应的setter中设置,然后在UI层中,我们得到 通过 getter() 获取值并将上面的 2 个函数应用于它,然后 最终以JSON格式响应客户端。

这不是一个干净的解决方案,因为 set 发生了两次,并且代码实际上因 GET 和 SET 而变得臃肿。

我在寻找什么:

一个注释(例如,@Format(type="ssn"),我可以将其应用于 POJO 字段,这将确保任何注释的字段都会使用连字符更新 SSN。

这是一个不使用Spring框架的Web应用程序,因此任何关于Spring的建议都无法实现。

最佳答案

创建一个扩展 JsonSerializer 的类,然后在 getter 上使用 @JsonSerialize(using=MySerializer.class) 注释

其中一个序列化器可能类似于:

public class MySerializer extends JsonSerializer<String> {

@Override
public void serialize( String value
, JsonGenerator jgen
, SerializerProvider provider) throws IOException
, JsonProcessingException {
jgen.writeString(MyUtilsClass.formatWithHyphen(value) );
}

}

关于java - 如何创建注释以格式化金额值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22328535/

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