如何通过 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;
}
这会起作用。
我有以下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;
}
这会起作用。