How can I properly serialize and deserialize JSON in Java with generic collections?

Gson provides TypeToken to preserve generic type information during deserialization.

import com.google.gson.*;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.List;

class AwesomeList<T> {
    List<T> items;
}

public class GsonGenericExample {
    public static void main(String[] args) {
        Gson gson = new Gson();
        String json = "[\"Hello\", \"World\"]";
        
        Type type = new TypeToken<AwesomeList<String>>(){}.getType();
        AwesomeList<String> list = gson.fromJson(json, type);

        System.out.println(list.items); // Output: [Hello, World]
    }
}

Gson automatically handles generics using TypeToken.