Как преобразовать POJO в JSON и наоборот, используя только API Java Mongo (без предварительного сохранения)

#java #mongodb

Вопрос:

Мое мобильное приложение получает документ JSON с моего сервера, но затем мое приложение отправляет его обратно на сервер с дополнительными заполненными полями, некоторые поля изменены.

После получения на сервере я могу преобразовать эту строку JSON в общий документ Mongo и сбросить ее в базу данных, а затем прочитать ее как POJO. Это расточительно, все, что я хочу сделать, это преобразовать JSON в POJO с помощью API mongo, немного манипулировать данными, а затем сохранить их.

Точно так же я иногда не хочу запрашивать как общий документ, но определенный типизированный POJO, а затем создавать из него документ / JSON после обработки его безопасным для типа способом.

В идеале я бы тоже хотел поддержать анализ списка документов. Используя API Java Mongo, возможно ли

  1. Преобразуйте POJO в строку JSON
  2. Преобразуйте строку JSON (или документ) в POJO
  3. Преобразуйте массив JSON в список
  4. Преобразование списка в список документов в формате JSON

Пожалуйста, обратите внимание, что я стараюсь избегать использования JAX-RS / JAXB или Spring или других сторонних библиотек, таких как GSON, поскольку до сих пор они не сохраняют JSON в том же формате, как если бы я запрашивал базу данных mongo с использованием общего типа документа.

В качестве действительно простого примера, мой JSON имеет свойства _id и даты, подобные этому, некоторые сущности будут иметь вложенные дочерние документы/типы …

 {
        "questions": [
            {
                "_id": {
                    "$oid": "605b3d62958763a2e18be480"
                },
                "companyId": {
                    "$oid": "554a0123c2e625bd02259318"
                },
                "groupId": null,
                "title": "Test Title 1",
                "desc": "Description 1",
                "style": "range",
                "minRange": 1,
                "maxRange": 10,
                "comments": false,
                "startDate": {
                    "$date": "2021-03-01T00:00:00Z"
                },
                "endDate": {
                    "$date": "2021-03-31T23:59:00Z"
                },
                "deleted": true,
                "frequencyMins": 1
            },
            ..
        ],
    }
}
 

Комментарии:

1. «…они не хранят JSON в том же формате…» Формат-JSON. Порядок полей не имеет значения.

2. Похоже, что ваш JSON является расширенным JSON и может быть импортирован в MongoDB по мере его использования mongoimport . Затем вы можете прочитать из базы данных как документ или POJO (используйте кодеки).

3. Спасибо, но это JSON, который был сгенерирован из Mongo путем запроса с использованием универсального типа <Документ>. Мне не нужен монгоимпорт, я могу просто использовать SDK для добавления / обновления с использованием того же или измененного документа. Проблема в том, получаю ли я JSO из мобильного приложения и хочу сначала проанализировать его в POJO (как?) или запросить из БД в качестве POJO (вместо общего документа), чтобы безопасно обрабатывать его перед преобразованием в документ, а затем в строку JSON?