You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In lenient mode, JsonWriter#value(java.lang.Number) can write pseudo-numeric values like NaN, Infinity, -Infinity:
if (!lenient
&& (string.equals("-Infinity") || string.equals("Infinity") || string.equals("NaN"))) {
thrownewIllegalArgumentException("Numeric values must be finite, but was " + value);
}
But JsonWriter#value(double) behaves in different way:
if (Double.isNaN(value) || Double.isInfinite(value)) {
thrownewIllegalArgumentException("Numeric values must be finite, but was " + value);
}
So, while working with streaming, it's impossible to write semi-numeric value without boxing a double (e. g. out.value((Number) Double.valueOf(Double.NaN))).
I think, this should be possible, because boxing gives worse performance.
The text was updated successfully, but these errors were encountered:
…e(Number) does (#1093)
* Added test which shows that lenient JsonWriter fails writing infinite primitive doubles, but does not fail writing boxed doubles, as stated in #1090.
* Fixed JsonWriter#value(double) to write infinite and NaN values when lenient, as JsonWriter#value(Number) does. (fixes#1090)
sebasjm
pushed a commit
to sebasjm/gson
that referenced
this issue
Mar 11, 2018
…e(Number) does (google#1093)
* Added test which shows that lenient JsonWriter fails writing infinite primitive doubles, but does not fail writing boxed doubles, as stated in google#1090.
* Fixed JsonWriter#value(double) to write infinite and NaN values when lenient, as JsonWriter#value(Number) does. (fixesgoogle#1090)
In lenient mode, JsonWriter#value(java.lang.Number) can write pseudo-numeric values like
NaN
,Infinity
,-Infinity
:But JsonWriter#value(double) behaves in different way:
So, while working with streaming, it's impossible to write semi-numeric value without boxing a double (e. g.
out.value((Number) Double.valueOf(Double.NaN))
).I think, this should be possible, because boxing gives worse performance.
The text was updated successfully, but these errors were encountered: