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

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

我有下面的json

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

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

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对象为空,我如何正确地填充它?
对json进行更改是这里最后的手段,我可以进行任何其他需要的更改。

bjp0bcyl

bjp0bcyl1#

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

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

这样就行了

相关问题