如何通过 gson 将 json 反序列化为嵌套的自定义地图?
Posted
技术标签:
【中文标题】如何通过 gson 将 json 反序列化为嵌套的自定义地图?【英文标题】:How to deserialize json to nested custom map via gson? 【发布时间】:2021-12-24 05:48:36 【问题描述】:我有以下 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
对象设为 null,如何正确填充它?
更改 json 是这里的最后手段。我可以进行任何其他所需的更改。
【问题讨论】:
Profile
有二传手吗?
@JoãoDias 是的,我确实有标准的 getter 和 setter。
【参考方案1】:
问题在于您的型号。您不需要Match
,因为profiles
在您的JSON 中并不真正存在。你只需json
(这个有小改动)和Profile
:
class json
String id;
Map<String,Profile> match;
这会起作用。
【讨论】:
非常感谢!像魅力一样工作。 不客气 ;)以上是关于如何通过 gson 将 json 反序列化为嵌套的自定义地图?的主要内容,如果未能解决你的问题,请参考以下文章
使用 GSON 将 JSON 反序列化为 Java 对象时遇到问题
如何将具有嵌套属性的 JSON 对象反序列化为 Symfony 实体?