diff --git a/src/main/java/br/ufrgs/inf/prosoft/jsonserialiser/JSONSerialiser.java b/src/main/java/br/ufrgs/inf/prosoft/jsonserialiser/JSONSerialiser.java
index cd5fcb8..e70c851 100644
--- a/src/main/java/br/ufrgs/inf/prosoft/jsonserialiser/JSONSerialiser.java
+++ b/src/main/java/br/ufrgs/inf/prosoft/jsonserialiser/JSONSerialiser.java
@@ -9,7 +9,6 @@ import java.io.IOException;
import java.io.Writer;
import java.lang.reflect.Array;
import java.lang.reflect.Field;
-import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collection;
import java.util.ConcurrentModificationException;
@@ -140,8 +139,7 @@ public class JSONSerialiser {
return;
}
if (object instanceof Number) {
- Number number = (Number) object;
- serialiseNumber(number);
+ this.writer.append("\"").append(String.valueOf(object)).append("\"");
return;
}
if (object instanceof Enum) {
@@ -164,7 +162,7 @@ public class JSONSerialiser {
}
if (object instanceof Date) {
Date date = (Date) object;
- serialiseNumber(date.getTime());
+ this.writer.append("\"").append(String.valueOf(date.getTime())).append("\"");
return;
}
if (visited.stream().anyMatch((visited) -> (visited == object))) {
@@ -313,47 +311,4 @@ public class JSONSerialiser {
this.writer.append('"');
}
}
-
- private void serialiseNumber(Number number) throws IOException {
- // not all Numbers may match actual JSON Numbers. i.e. Fractions or Complex
- final String numberAsString = numberToString(number);
- try {
- // Use the BigDecimal constructor for it's parser to validate the format.
- @SuppressWarnings("unused")
- BigDecimal unused = new BigDecimal(numberAsString);
- // Close enough to a JSON number that we will return it unquoted
- this.writer.append(numberAsString);
- } catch (NumberFormatException ex) {
- // The Number value is not a valid JSON number.
- // Instead we will quote it as a string
- serialiseString(numberAsString);
- }
-
- }
-
- private String numberToString(Number number) {
- if (number instanceof Double) {
- if (((Double) number).isInfinite() || ((Double) number).isNaN()) {
- return String.valueOf(number);
- }
- } else if (number instanceof Float) {
- if (((Float) number).isInfinite() || ((Float) number).isNaN()) {
- return String.valueOf(number);
- }
- }
-
- // Shave off trailing zeros and decimal point, if possible.
- String string = number.toString();
- if (string.indexOf('.') > 0 && string.indexOf('e') < 0
- && string.indexOf('E') < 0) {
- while (string.endsWith("0")) {
- string = string.substring(0, string.length() - 1);
- }
- if (string.endsWith(".")) {
- string = string.substring(0, string.length() - 1);
- }
- }
- return string;
- }
-
}