我存儲在MySQL數據庫非常低的值,這樣的事情:BIGDECIMAL低值
0.00000070
0.00000097
我使用的彈簧引導到服務於這個值作爲一個REST API,我的模型映射是這樣的:
public class Account extends BaseEntity {
@Column(name = "VALUATION", precision = 15, scale = 8)
@JsonView({ ViewsUtil.Ticker.class, ViewsUtil.Chart.class })
@Setter @Getter
private BigDecimal valuation;
// others fields
在db它存儲正確,就像我出現了,但是顯示,它顯示就像這樣:
{
"valuation": 9.7e-7
}
釷ere的顯示方式就像它存儲的一樣?
感謝
----編輯
改變了我的模型,這個
@Column(name = "VALUATION", precision = 15, scale = 8)
@JsonView({ ViewsUtil.Ticker.class, ViewsUtil.Chart.class })
@JsonDeserialize(using = LowValueDeserializer.class)
@Setter @Getter
private BigDecimal valuation;
而且我的自定義解串器是這樣的:
@JsonComponent
public class LowValueDeserializer extends JsonDeserializer<String> {
@Override
public String deserialize(JsonParser parser, DeserializationContext context) throws IOException, JsonProcessingException {
System.out.println(parser.getDecimalValue());
return parser.getDecimalValue().toPlainString();
}
}
系統從來就不是調用結果仍然相同。
請參閱https://github.com/FasterXML/jackson-databind/wiki/Serialization-features:查找WRITE_BIGDECIMAL_AS_PLAIN –
您想格式化BigDecimal以進行顯示。即使您想要的格式不同於重複文章中使用的格式,也是重複的。 – DwB
@DwB在'.toPlainString()'的重複中使用'String.format()'有什麼好處嗎?對於OP所需要的應該更好 – baao