Я создаю Java Jersey API, который использует MongoDb и драйвер MongoDb.
Ресурсы должны выводить JSON сохраненного документа MongoDb для использования в проекте внешнего интерфейса с использованием Svelte.
Из-за стандартной реализации org.bson.Document.toJson()
вывод моих документов выглядит примерно так:
[{ "_id" : { "$oid" : "5e97f08f2175aa9174dbec0e" }, "hour" : 8, "minute" : 15, "enabled" : true, "duration" : 120 }
Я бы хотел, чтобы это было:
[{ "_id" : "5e97f08f2175aa9174dbec0e", "hour" : 8, "minute" : 15, "enabled" : true, "duration" : 120 }
Таким образом, это легче обрабатывать идентификатор в интерфейсе. Итак, как избавиться от объекта $ oid?
Мне уже удалось получить формат как * wi sh, используя:
JsonWriterSettings settings = JsonWriterSettings.builder()
.outputMode(JsonMode.RELAXED)
.objectIdConverter((value, writer) -> writer.writeString(value.toHexString()))
.build();
System.out.println(doc.toJson(settings));
Но как зарегистрировать этот объект настройки глобально так что каждый doc.toJson()
вызов будет использовать его?
И что произойдет, если я отправлю измененные или новые документы из интерфейса в API и сделаю:
Document document = Document.parse(doc);
Является ли мой модифицированный _id
поле автоматически преобразуется снова в ObjectId? Или мне нужен org.bson.codecs.Decoder или CodecRegistry? Как это будет сделано?