Частичный ответ JSON Rest WS

Я перепробовал много сообщений, найденных в сети, прежде чем писать этот вопрос.

Я хотел бы получить частичный ответ JSON в моем веб-сервисе REST. Фрист, я пытался вернуть JSONArray, но у меня

"No converter found for return value of type: class org.json.JSONArray"

Затем я попытался вернуть список JSONObject, я получил

"com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class org.json.JSONObject and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: java.util.ArrayList[0])"

Когда я устанавливаю для SerializationFeature.FAIL_ON_EMPTY_BEANS значение false в моем application.properties, я получаю список пустых объектов JSONObject, например: {}

Я делюсь с вами своим кодом на GitHub: https://github.com/AbderrahmenISSA/StockManagement/blob/master/src/main/java/com/stockmgt/controllers/v3/ProductControllerV3.java

Если под частичным ответом json вы имеете в виду, например, просто включение некоторых атрибутов объекта, то, как я обнаружил, менее безболезненным является наличие отдельных DTO (объектов передачи данных), реализованных как классы с общедоступными членами и без методов. Если вы не знаете, что такое DTO, погуглите, о нем много материала (за и против).

Juan 18.12.2018 14:56

Я уже использую DTO. Проблема в том, что она динамическая: - один пользователь может получить только одно поле: / products? Select = productName - другой вызов: / products? Select = productName, productCode - еще один: /products?select=productName,productCode,category.categoryNa‌ Меня -... Итак, мы не можем создать столько DTO, сколько возможных комбинаций

Abderrahmen 18.12.2018 15:04
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
158
1

Ответы 1

в вашем DTO установите для атрибутов, которые вы не хотите получать, значение NULL. (сделайте это по простому алгоритму)

затем настройте сериализатор, чтобы он не включал нулевые поля в ответ json. (иногда это поведение по умолчанию)

Другие вопросы по теме