如何通过 gson 将 json 反序列化为嵌套的自定义地图?

How to deserialize json to nested custom map via gson?

我有以下json

{
  "id": "1111",
  "match": {
    "username1": {
      "id": "1234",
      "name": "alex"
    },
    "username2": {
      "id": "5678",
      "name": "munch"
    }
  }
}

要反序列化它,我有以下数据模型class。

class json{
    String id;
    Match match;
}

class Match {  
  private Map<String,Profile> profiles  
}

class Profile{
    private String id;
    private String name;
}

我在使用 gson 时没有收到任何反序列化错误,但是 profiles 变量为空。 这就是我反序列化的方式。 var json = gson.fromJson(data,json.class)

match 对象中可以有动态数量的用户名,而不仅仅是两个。为什么我得到的 profile 对象为 null,我该如何正确填充它?

对 json 进行更改是最后的手段。我可以进行任何其他必要的更改。

问题出在您的模型上。您不需要 Match,因为 profiles 并不真正存在于您的 JSON 中。你只需 json(这个有小改动)和 Profile:

class json{
    String id;
    Map<String,Profile> match;
}

这会起作用。