Как преобразовать модель в JSON

Когда я наивно использую Джексона для преобразования в JSON, я получаю это исключение:

Причина: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: не найден сериализатор для класса org.apache.cayenne.access.DefaultDataRowStoreFactory и не обнаружено свойств для создания BeanSerializer

Изменить: я хотел бы сделать что-то вроде этого:

ObjectContext context = cayenneRuntime.newContext();

List<User> users = ObjectSelect.query(User.class).select(context);
JsonObject json = Json.mapper.convertValue(obj, Map.class)

Есть ли существующие решения? Спасибо


person Gero    schedule 18.10.2018    source источник
comment
Не могли бы вы опубликовать код?   -  person Bas    schedule 18.10.2018


Ответы (1)


Учитывая, что в общем случае Cayenne предоставляет вам не просто объекты, а виртуальный граф объектов, сериализация в JSON становится более причудливой темой, чем кажется на первый взгляд.

Короткий ответ: вам пришлось бы вручную создавать JSON для любого подграфа вашего графа объектов.

Хотя это и не прямой ответ, возможно, стоит упомянуть, что инфраструктура Agrest (например, LinkRest) поддерживает правило- на основе сериализации графов объектов Cayenne в JSON. Но это не отдельный компонент. т.е. он будет работать только в том случае, если вы используете его для своих служб REST.

person andrus_a    schedule 22.10.2018