Size: a a a

2019 November 05

AL

Alexander Levin in Kotlin Start
Phoenix
Меня удивляет что именно коллекции вызывают этот эффект(с мапой то же самое), а кастомные классы нет
Надо посмотреть внутрь возможно, но не может быть такого, что если is Collection, то jackson не думает и сразу как лист сериализует?
источник

D

Denys in Kotlin Start
+ Вероятно mapper делает проверку класса для сериализации.
источник

D

Denys in Kotlin Start
Если честно, выстрел в ногу картечью вижу я.
источник

P

Phoenix in Kotlin Start
Denys
+ Вероятно mapper делает проверку класса для сериализации.
и выкидывает часть полей класса?
источник

P

Phoenix in Kotlin Start
Denys
Если честно, выстрел в ногу картечью вижу я.
м?
источник

D

Denys in Kotlin Start
Phoenix
и выкидывает часть полей класса?
Нет. Там, скорее всего вроде:

if (value is List) {
   value.items.joinToString()
}
источник

AM

Andrew Mikhaylov in Kotlin Start
Ох, я by list не увидел. Да, возможно, так и есть. Загляните в KotlinModule.
источник

AL

Alexander Levin in Kotlin Start
Phoenix
и выкидывает часть полей класса?
Ну тут есть конфликт восприятия. Поскольку это collection, то вроде надо поэлементно положить всё в лист. Поскольку это объект, то надо сложить в объектное представление. Скорее всего просто Jackson приоритетом выбирает тот факт, что это коллекция.
источник

P

Phoenix in Kotlin Start
Alexander Levin
Ну тут есть конфликт восприятия. Поскольку это collection, то вроде надо поэлементно положить всё в лист. Поскольку это объект, то надо сложить в объектное представление. Скорее всего просто Jackson приоритетом выбирает тот факт, что это коллекция.
Тогда как это исправить..
источник

AM

Andrew Mikhaylov in Kotlin Start
Andrew Mikhaylov
Ох, я by list не увидел. Да, возможно, так и есть. Загляните в KotlinModule.
Да нет, вроде ничего критичного.
источник

AM

Andrew Mikhaylov in Kotlin Start
Интересно было бы взять джавку, руками заимплементить AbstractList и проверить, как это скушает jackson.
источник

AM

Andrew Mikhaylov in Kotlin Start
Phoenix
Тогда как это исправить..
А вы пробовали кастомный сериализатор повесить для вашего A в ObjectMapper?
источник

P

Phoenix in Kotlin Start
Andrew Mikhaylov
А вы пробовали кастомный сериализатор повесить для вашего A в ObjectMapper?
Нет, но это ведь сильно усложнит код
источник

AM

Andrew Mikhaylov in Kotlin Start
Возможно. Вы спрашиваете, как исправить, я предлагаю варианты, которые приходят в голову :)
источник

P

Phoenix in Kotlin Start
В случае изменения класса прийдется менять и сериализатор, слишком много лишних зависимостей
источник

AM

Andrew Mikhaylov in Kotlin Start
Andrew Mikhaylov
Интересно было бы взять джавку, руками заимплементить AbstractList и проверить, как это скушает jackson.
Собсна, это можно, наверна, и без джавки провернуть, просто не подключать котлиновский модуль джексона и взять явное наследование вместо наследования делегацией. По крайней мере, это помогло бы локализовать проблему и понимать, о чём ишью заводить м надо ли вообще или это ожидаемо.
источник

P

Phoenix in Kotlin Start
Andrew Mikhaylov
Собсна, это можно, наверна, и без джавки провернуть, просто не подключать котлиновский модуль джексона и взять явное наследование вместо наследования делегацией. По крайней мере, это помогло бы локализовать проблему и понимать, о чём ишью заводить м надо ли вообще или это ожидаемо.
Сейчас попробую
источник

P

Phoenix in Kotlin Start
Andrew Mikhaylov
Собсна, это можно, наверна, и без джавки провернуть, просто не подключать котлиновский модуль джексона и взять явное наследование вместо наследования делегацией. По крайней мере, это помогло бы локализовать проблему и понимать, о чём ишью заводить м надо ли вообще или это ожидаемо.
таки да, он игнорит все поля в листе
источник

AM

Andrew Mikhaylov in Kotlin Start
Phoenix
таки да, он игнорит все поля в листе
Ну значит это не с котлином проблема, а глобально с jackson-ом.

Оно и логично, что он все списки одинаково сериализует, наверна, есть смысл смотреть в сторону того, как заоверрайдить сериализацию для конкретной коллекции.
источник

D

Denys in Kotlin Start
источник