Home > Java > javaTutorial > How to Create a Gson TypeToken for an ArrayList with a Dynamic Item Type?

How to Create a Gson TypeToken for an ArrayList with a Dynamic Item Type?

Susan Sarandon
Release: 2024-12-11 13:45:10
Original
1035 people have browsed it

How to Create a Gson TypeToken for an ArrayList with a Dynamic Item Type?

Gson TypeToken with Dynamic ArrayList Item Type

In Gson, TypeToken is a utility class that can be used to create type information for unknown types at runtime. It is commonly used to deserialize JSON strings into Java objects.

When working with lists, it is possible to have the ArrayList's item type be defined dynamically at runtime. This can be done using reflection.

Problem:

The following code attempts to create a TypeToken for a list with a dynamic item type:

private <T> Type setModelAndGetCorrespondingList2(Class<T> type) {
    Type typeOfObjectsListNew = new TypeToken<ArrayList<T>>() {}.getType();
    return typeOfObjectsListNew;
}
Copy after login

However, this approach results in a SQLException when converting the JSON string to an object due to a mismatch in type definitions.

Solution:

Starting from Gson 2.8.0, you can use TypeToken#getParameterized(Type rawType, Type... typeArguments) to create the TypeToken for a list with a dynamic item type. The solution is:

Type typeOfObjectsListNew = TypeToken.getParameterized(ArrayList.class, myClass).getType();
Copy after login

This creates a TypeToken for an ArrayList with the specified dynamic item type (myClass). You can then use getType() to retrieve the type information for use in deserialization.

The above is the detailed content of How to Create a Gson TypeToken for an ArrayList with a Dynamic Item Type?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template