【发布时间】:2018-07-30 00:37:12
【问题描述】:
我正在使用 Fuse 6.2.1(Switchyard、Apache Camel)和 Maven 开发 Web 服务,但我遇到了我希望它们处理精度高达 23 和2 的刻度。每当我有一个精度超过 7 的值时,格式就会更改为科学记数法。由于我在银行工作,这是市长的问题
我的 XSD 上用于我的服务的示例字段如下:
<xs:element minOccurs="1" name="amount" type="xs:decimal" />
后来我把声明改成这样:
<xs:element minOccurs="1" name="amount" >
<xs:simpleType>
<xs:restriction base="xs:decimal">
<xs:fractionDigits value="2" />
<xs:totalDigits value="23"/>
<xs:pattern value="[0-9][.][0-9]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
但科学记数法保持不变。在我的 java 代码中,我正在打印变量并且格式正确,更重要的是,我的服务在骆驼内部有 2 条路由,一条用于 SOAP,一条用于 REST (JSON),而 JSON 响应是有问题的, SOAP 效果很好,所以我猜问题是创建 Json 响应,但我不知道如何处理这个
在我的多次测试中,我有一个表,其字段值为“1234567890123456789.00”,在 SOAP 上我得到:1234567890123456789.00 但在 Json 上:“金额”:1.23456789012345677E18
如果有人知道如何解决这个问题,请告诉我
【问题讨论】:
-
那么你是如何创建你的 json 消息的呢?你能分享一下代码吗?
标签: java json maven apache-camel jbossfuse