ITADN

On-demand double parsing breaks on integer values

#70OpenSamCarlberg 创建于 2025-08-12
S
SamCarlbergcommented
If a JSON stream contains an integer number, `SimdJsonParser` will throw a parse exception if it's given a schema where that number is represented as a double. This applies to bare numbers, object values, and array entries: ```java // All of these throw a parse exception double rawDouble = new SimdJsonParser().parse("1".getBytes(UTF_8), 1, double.class); double[] array = new SimdJsonParser().parse("[1, 2]".getBytes(UTF_8), 6, double[].class); HasDouble box = new SimdJsonParser().parse("{\"value\": 1}".getBytes(UTF_8), 12, HasDouble.class); record HasDouble(double value) {} ``` As far as I can tell, this is because `NumberParser.parseDouble` requires `double` literals to either have a decimal point or exponent part. Should that be the case? I would expect integer number values to be permitted, since they can always be widened to doubles
0 条评论