Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to display BigDecimal number with trailing zero in a JSON (not as string)?

Tags:

java

json

jackson

In my representation response I have one field which is of BigDecimal type. Its value is 2.30 but the json response display it as 2.3 Is there any way to show also the trailing zero , without displaying it as a string ? BTW - I'm using Jackson library.

{
  "version" : 2.3 (needs to be 2.30)
}
like image 270
sharon182 Avatar asked Jan 03 '23 20:01

sharon182


1 Answers

If you want to keep the JSON holding a numeric value, you don't have the choice, a numeric isn't impacted by the traling "0" in a decimal part, so they won't be used. Simply because :

2.3 = 2.30
2.3 = 2.300000

The zeros are simply ignored. If you really need to get a value like 2.30, you have two choices,

  1. use a String to hold the formatted number in the JSON
  2. format the value on the client side.

Both solution will used the same logic :

String.format("%.2f", 2.3); //String: 2.30

The difference is the moment you format the value.

Note:

Since you have a "version" field, I would use a String since a version is represented by numeric value separated by .. See the maven repo of Jackson :

<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.9.4</version>
</dependency>

2.9.4 is not a number.

like image 72
AxelH Avatar answered Jan 13 '23 13:01

AxelH