In generale, per mappare gli oggetti in JSON Gson si basa (per suo esplicito design) solo sui nomi dei campi negli oggetti. NON sulle proprietà deducibili dai getter/setter. L'esempio l'ho fatto prima.
Ma forse non hai ancora capito: in JSON una chiave è SOLO una stringa. Il problema l'ho evidenziato in rosso prima. Le chiavi nel HashMap sono oggetti Categoria. Ma ti ripeto che in JSON può essere solo una stringa.
Quindi la questione è: a chi/a cosa serve il JSON generato?
P.S. continui a parlare di "parsare" ma in questo contesto non vuol dire nulla.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet