Désérialisation d'une carte & lt; String, Object & gt; domaine avec Gson

J'ai un objet Utilisateur avec cette structure:

class User {
    private String id;
    private String name;
    private Map<String, Object> properties;

    //GETTERS & SETTERS
}

J'ai une Chaîne JSON avec cette structure:

{
    "user": {
        "id:"123456789",
        "name:"azerty",
        "emailHash":"123456789", //not used in User class
        "properties": {
            "p1":1,
            "p2":"test",
            "p3":[1, 2, 3, 4],
            "p4":{
               etc...
            }
        }
    }
}

Propriétés clés des chaînes de caractères, des Propriétés des valeurs peut être un String, int, Tableau, boolean, Carte etc.

J'essaie de désérialiser cette chaîne JSON avec Gson comme ça:

JsonParser parser = new JsonParser();
JsonElement element = parser.parse(jsonString);
JsonObject object = element.getAsJsonObject();

GsonBuilder builder = new GsonBuilder();
builder.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES);
Gson gson = builder.create();
User user = (User) gson.fromJson(object.get("user"), new TypeToken<User>() {}.getType());

Champs 'id' et 'nom' sont correctement injectés mais le champ "propriétés" reste nulle.

Savez-vous ce que je fais mal?
Merci d'avance pour votre aide!

source d'informationauteur Franck Yapadesouci Anso | 2013-01-10