首页 > 解决方案 > 如何通过 gson 将 json 反序列化为嵌套的自定义地图?

问题描述

我有以下 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变量为 null。这就是我反序列化的方式 var json = gson.fromJson(data,json.class)

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

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

标签: javajsonjacksongson

解决方案


问题是你的模型。您不需要Match,因为profiles您的 JSON 中并不真正存在。你只是json(这个有小的变化)和Profile

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

这将起作用。


推荐阅读