Я должен десериализовать ниже Json
{
"Student": [
{
"Number": "12345678",
"Name": "abc"
"Country": "IN",
"AreaOfInterest": [
{
“FootBall”: “Yes”,
“Cricket”: “No”
}
]
}
],
"hasMore": false,
"links": [
{
"rel": "self",
"kind": "collection"
}
]
}
в ниже POJO
class {
private String number;
private String name;
private String footBall;
}
Я написал пользовательский десериализатор Gson, чтобы поднять AreaOfInterest , как показано ниже
public List<? extends Student> deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
var jsonObject = json.getAsJsonObject();
Stream<JsonElement> student = StreamSupport.stream(jsonObject.getAsJsonArray("Student").spliterator(), true);
Stream<JsonElement> areaOfInterest = StreamSupport.stream(jsonObject.getAsJsonArray("Student").get(0).getAsJsonObject().get("AreaOfInterest").getAsJsonArray().spliterator(), true);
Stream.concat(student,areaOfInterest)
.map(it -> context.deserialize(it, Student.class))
.map(Student.class::cast)
.collect(List.collector())
}
Но десериализатор, возвращающий два объекта Student вместо одного, одно означает, что все поля пусты, кроме footBall остальное действительно student кроме footBall как ноль, любая помощь, как получить один объект со всеми полями, будет очень полезна, заранее спасибо.