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

mlnl4t2r  于 2022-11-06  发布在  其他
关注(0)|答案(1)|浏览(203)

我有下面的json

  1. {
  2. "id": "1111",
  3. "match": {
  4. "username1": {
  5. "id": "1234",
  6. "name": "alex"
  7. },
  8. "username2": {
  9. "id": "5678",
  10. "name": "munch"
  11. }
  12. }
  13. }

为了将其反序列化,我使用了以下数据模型类。

  1. class json{
  2. String id;
  3. Match match;
  4. }
  5. class Match {
  6. private Map<String,Profile> profiles
  7. }
  8. class Profile{
  9. private String id;
  10. private String name;
  11. }

当我使用gson时,我没有得到任何反序列化错误,但是profiles变量是空值。这就是我反序列化的方式。var json = gson.fromJson(data,json.class)
match对象中,可以有动态数量的用户名,而不仅仅是两个。为什么我得到的profile对象为空,我如何正确地填充它?
对json进行更改是这里最后的手段,我可以进行任何其他需要的更改。

bjp0bcyl

bjp0bcyl1#

问题在于你的模型,你不需要Match,因为profiles在JSON中并不存在,你只需要json(这个模型做了一些小的改动)和Profile

  1. class json{
  2. String id;
  3. Map<String,Profile> match;
  4. }

这样就行了

相关问题