-
Notifications
You must be signed in to change notification settings - Fork 4.4k
Description
Gson version
2.9.0
Java / Android version
Java 17
Description
The built-in adapters for primitive types don't perform numeric conversion for serialization. This is most obvious when using Gson's non-typesafe method Gson.toJson(Object, Type):
System.out.println(new Gson().toJson(1.5, byte.class));Even though the adapter for byte should be used, Gson nonetheless emits 1.5 as output.
I noticed that while trying to refactor the primitive type adapters to directly call the primitive JsonWriter.value methods instead of JsonWriter.value(Number) due to the overhead for checking if the string representation is a valid JSON number.
Expected behavior
Either narrowing / widening conversion should be performed or an exception should be thrown.
(Or are there legit use cases for this?)
Actual behavior
Gson just emits the Number.toString() result, even if that does not match the type of the requested adapter.
Reproduction steps
System.out.println(new Gson().toJson(1.5, byte.class));