将字符串表示值解析为Java类类型

时间:2015-08-19 09:11:20

标签: java

我有一个网络服务,它以“动态字段”作为响应,具体取决于对象的字段数量可能会有所不同,并且仅在该对象上。

描述看起来像这样

<field name="ISSUER" code="ISSUER_USER">test123</field> // 1
<field name="START" code="INSURANCE_PERIOD_START">2015-05-19</field> // 2
<field name="NATURAL DISASTER" code="MOD_NATURAL_DISASTER">600.00</field>
<field name="FIRE" code="MOD_FIRE">600.00</field> // 3
<field name="VANDALISM" code="MOD_VANDALISM">600.00</field>
<field name="THEFT" code="MOD_THEFT">600.00</field>

由于值都是字符串,我需要能够为可以存储所有这些值的字段类型创建抽象。

现在注释字段 1 是一个字符串类型,这很好,正常字符串是按原样处理的,但是 2 ,是一个日期表示,我需要转换它在前端的其他模式中, 3 是一个货币金额字段,例如需要变为BigDecimal。

在不同的列表中有很多类似的字段,所有类型都是field

我希望有一个类FieldData,其中包含变量String name;,并且值是通用的,具体取决于解析的值Class<?> value或其他内容?我不知道。或者它也可以是字符串以及值,并在分配之前进行解析,因此结束表示可以是所有值的字符串格式。

我的问题是:我应该如何编写能够确定该字段是否应该被转换的解析器(如果它是十进制的,如果它是日期则解析为另一种日期格式),或者用于其他字符串只分配当前值。

有什么建议吗?提前谢谢!

1 个答案:

答案 0 :(得分:0)

最佳解决方案是更新Web服务以提供字段标记的type属性。如果失败,您可以使用一组正则表达式尝试将它们中的每一个从最具体到最常用的方式匹配。所以你试着解析日期,如果它失败则解析为整数,如果它失败则解析为double,如果它们全部失败则将其作为字符串值。