Если это вариант, я бы использовал библиотеку gson . Он использует отражение, поэтому он не нуждается в установщиках для заполнения данных. И эти конструкторы также не будут использоваться.
С этой библиотекой вы можете выполнить десериализацию всего за одну строку, как вы ранее определили классы Student
и Details
со свойствами, которые соответствуют:
Student studentObject = new Gson().fromJson(JSON_INPUT, Student.class);
Затем вам нужно будет добавить несколько геттеров, чтобы получить данные о StudentObject.
Обновление
Думаю, я также нашел, что не так с тем Джексоном ObjectMapper, который вы использовали. Согласно этот сайт Джексон работает по-другому, и если поле не опубликовано c, как те, которые вы должны определить сеттеры или геттеры, и библиотека будет использовать их.
Сеттер делает неопубликованное c поле десериализуемо только для поля, тогда как получатель делает непубличное c поле сериализуемым и десериализуемым.
Поэтому вам нужно добавить сеттеры или геттеры для studentName, studentID, details, detail1 & detail2, если Вы все еще предпочитаете использовать Джексона, иначе он не будет работать.