Size: a a a

2021 March 03

WD

Web Dev in pro.jvm
из rest клиента когда обращаюсь всегда по-настоящему полный ответ, а из java чудит
источник

Y

Yrtimd in pro.jvm
Всем привет столкнулся с проблемой сериализации объектов в json + наследование
Использую Spring Boot + jackson.
Есть две сущности.
1)Person
2)Student extends Person

Есть List<Student> studentList

Допустим есть httpМетод в параметрах которого есть поле isOnlyPerson.
Если isOnlyPerson = true, тогда response должен выдавать список объектов с полями только из Person.
Если же данное поле не задано или =  false, тогда необходимо выдавать список объектов с полями Student(field from Student + field from Person, так как студент является наследником person).

Я пытался изменить тип ссылки на объект, но это не помогло. Меняя тип ссылки у меня все равно объекты Student сериализуются как объекты Student, а не как Person.
у кого-то есть какие идеи как это можно реализовать?
Гист пример:
https://gist.github.com/OrlovDiga/7db89e8560302df4516bc396b05c16af

Думаю, что лесть в jsonConverter не стоит, и данная проблема должна решаться в пределах наследования.
источник

AE

Alexandr Emelyanov in pro.jvm
Web Dev
content length  формируется и того что я отправлю

2 байта - да это "{}" пустую json отправляю
А, я думал это заголовки ответа
источник

WD

Web Dev in pro.jvm
Alexandr Emelyanov
А, я думал это заголовки ответа
Это тестовый сценарий, да там пустой ответ
источник

WD

Web Dev in pro.jvm
Надо будет на рабочем примере проверить завтра
источник

AE

Alexandr Emelyanov in pro.jvm
Yrtimd
Всем привет столкнулся с проблемой сериализации объектов в json + наследование
Использую Spring Boot + jackson.
Есть две сущности.
1)Person
2)Student extends Person

Есть List<Student> studentList

Допустим есть httpМетод в параметрах которого есть поле isOnlyPerson.
Если isOnlyPerson = true, тогда response должен выдавать список объектов с полями только из Person.
Если же данное поле не задано или =  false, тогда необходимо выдавать список объектов с полями Student(field from Student + field from Person, так как студент является наследником person).

Я пытался изменить тип ссылки на объект, но это не помогло. Меняя тип ссылки у меня все равно объекты Student сериализуются как объекты Student, а не как Person.
у кого-то есть какие идеи как это можно реализовать?
Гист пример:
https://gist.github.com/OrlovDiga/7db89e8560302df4516bc396b05c16af

Думаю, что лесть в jsonConverter не стоит, и данная проблема должна решаться в пределах наследования.
У тебя идёт просто даункаст к более общему типу, это меняет только тип ссылки, объект останется тем же. Тебе надо использовать дто и формировать PersonDto или StudentDto в зависимости от параметра
источник

Y

Yrtimd in pro.jvm
Да, наверное дто один из основных выходов из этой проблемы
источник

AD

Aleks Dolotin in pro.jvm
Yrtimd
Всем привет столкнулся с проблемой сериализации объектов в json + наследование
Использую Spring Boot + jackson.
Есть две сущности.
1)Person
2)Student extends Person

Есть List<Student> studentList

Допустим есть httpМетод в параметрах которого есть поле isOnlyPerson.
Если isOnlyPerson = true, тогда response должен выдавать список объектов с полями только из Person.
Если же данное поле не задано или =  false, тогда необходимо выдавать список объектов с полями Student(field from Student + field from Person, так как студент является наследником person).

Я пытался изменить тип ссылки на объект, но это не помогло. Меняя тип ссылки у меня все равно объекты Student сериализуются как объекты Student, а не как Person.
у кого-то есть какие идеи как это можно реализовать?
Гист пример:
https://gist.github.com/OrlovDiga/7db89e8560302df4516bc396b05c16af

Думаю, что лесть в jsonConverter не стоит, и данная проблема должна решаться в пределах наследования.
Посмотрите вот эту аннотацию @JsonSubTypes я похожую проблему решал через нее
источник

AB

Andrey Belkin in pro.jvm
Web Dev
из rest клиента когда обращаюсь всегда по-настоящему полный ответ, а из java чудит
Я бы поставил брейкпойнт в самом клиенте Ok и поглядел, почему обрезает
источник

AB

Andrey Belkin in pro.jvm
Andrey Belkin
Я бы поставил брейкпойнт в самом клиенте Ok и поглядел, почему обрезает
Если именно из-за длины ответа, что логично, то может с сервером что-то решить
источник

WD

Web Dev in pro.jvm
Что такое брейкпоинт?
источник

WD

Web Dev in pro.jvm
Andrey Belkin
Если именно из-за длины ответа, что логично, то может с сервером что-то решить
Я там контролирую, апи сам писал на go , вроде все хорошо
источник

AB

Andrey Belkin in pro.jvm
Вот с этого и надо было начинать. Воспользуйся, пожалуйста, дебагером, в нем можно разобраться, что же идёт не так
источник

AE

Alexandr Emelyanov in pro.jvm
Web Dev
Что такое брейкпоинт?
источник

AB

Andrey Belkin in pro.jvm
Web Dev
Я там контролирую, апи сам писал на go , вроде все хорошо
Ну, такая длина ответа - это уже нехорошо, если ты ждешь чего-то большего на клиенте
источник

AE

Alexandr Emelyanov in pro.jvm
Web Dev
Я там контролирую, апи сам писал на go , вроде все хорошо
Ты апи на го тоже не отлаживал?
источник

WD

Web Dev in pro.jvm
Я проверял апи на клиенте инсомнии
источник

WD

Web Dev in pro.jvm
ответ приходил без обрезки нормально
источник

WD

Web Dev in pro.jvm
Как только делаю запрос через java сразу режет
источник

AB

Andrey Belkin in pro.jvm
Реализация клиента инсомнии эталоном не является, коллега правильно заметил про странность с длиной
источник