Gson 2.13.0
What's Changed
-
A bug in deserializing collections has been fixed. Previously, if you did something like this:
gson.fromJson(jsonString, new TypeToken<ImmutableList<String>>() {})
then the inferred type would be
ImmutableList<String>
, but Gson actually gave you anArrayList<String>
. Usually that would lead to an immediateClassCastException
, but in some circumstances the code might sometimes succeed despite the wrong type. Now you will see an exception like this:com.google.gson.JsonIOException: Abstract classes can't be instantiated! Adjust the R8 configuration or register an InstanceCreator or a TypeAdapter for this type. Class name: com.google.common.collect.ImmutableList
because Gson now really is trying to create an
ImmutableList
through its constructor, but that isn't possible.
Either change the requested type (in theTypeToken
) toList<String>
, or register aTypeAdapter
orJsonDeserializer
forImmutableList
. -
The internal classes
$Gson$Types
and$Gson$Preconditions
have been renamed to remove the$
characters. Since these are internal classes (as signaled not only by the package name but by the$
characters), client code should not be affected. If your code was depending on these classes then we suggest making a copy of the class (subject to the license) rather than depending on the new names.
Full Changelog: gson-parent-2.12.1...gson-parent-2.13.0