mirror of
https://github.com/ethauvin/JSON-java.git
synced 2025-06-17 07:50:52 -07:00
unexpected double behavior
This commit is contained in:
parent
994a19b831
commit
0640856462
1 changed files with 27 additions and 0 deletions
|
@ -604,6 +604,33 @@ public class JSONObjectTest {
|
||||||
exceptionCount == tryCount);
|
exceptionCount == tryCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void unexpectedDoubleToIntConversion() {
|
||||||
|
/**
|
||||||
|
* This test documents an unexpected numeric behavior.
|
||||||
|
* A double that ends with .0 is parsed, serialized, then
|
||||||
|
* parsed again. On the second parse, it has become an int.
|
||||||
|
*/
|
||||||
|
String key30 = "key30";
|
||||||
|
String key31 = "key31";
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
jsonObject.put(key30, new Double(3.0));
|
||||||
|
jsonObject.put(key31, new Double(3.1));
|
||||||
|
|
||||||
|
assertTrue("3.0 should remain a double",
|
||||||
|
jsonObject.getDouble(key30) == 3);
|
||||||
|
assertTrue("3.1 should remain a double",
|
||||||
|
jsonObject.getDouble(key31) == 3.1);
|
||||||
|
|
||||||
|
// turns 3.0 into 3.
|
||||||
|
String serializedString = jsonObject.toString();
|
||||||
|
JSONObject deserialized = new JSONObject(serializedString);
|
||||||
|
assertTrue("3.0 is now an int", deserialized.get(key30) instanceof Integer);
|
||||||
|
assertTrue("3.0 can still be interpreted as a double",
|
||||||
|
deserialized.getDouble(key30) == 3.0);
|
||||||
|
assertTrue("3.1 remains a double", deserialized.getDouble(key31) == 3.1);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The purpose for the static method getNames() methods are not clear.
|
* The purpose for the static method getNames() methods are not clear.
|
||||||
* This method is not called from within JSON-Java. Most likely
|
* This method is not called from within JSON-Java. Most likely
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue