В настоящее время я работаю над приложением vertx.io и хотел бы использовать mongo api для хранения данных. В настоящее время у меня довольно неуклюжая абстракция поверх классов JsonObject, где все методы get
и set
заменяются такими вещами, как:
this.backingObject.get(KEY_FOR_THIS_PROPERTY);
На данный момент все хорошо и хорошо, но оно не будет масштабироваться особенно хорошо. это также кажется грязным, особенно при использовании вложенных массивов или объектов. Например, если я хочу иметь возможность заполнять поля только тогда, когда фактические данные известны, я должен проверить, существует ли массив, и если он не создает его и не сохраняет его в объекте. Затем я могу добавить элемент в список. Например:
if (this.backingObject.getJsonArray(KEY_LIST) == null) {
this.backingObject.put(KEY_LIST, new JsonArray());
}
this.backingObject.getJsonArray(KEY_LIST).add(p.getBackingObject());
Я думал о потенциальных решениях, но не особенно люблю их. А именно, я мог бы использовать Gson или некоторую подобную библиотеку с поддержкой аннотаций для обработки загрузки объекта с целью манипулирования данными в моем коде, а затем с помощью функции serialize и unserialize как Gson, так и Vertx для преобразования между форматами (vertx to load data -> json string -> gson to parse json into pojos -> make changes -> serialize to json string -> parse with vertx and save)
но это действительно грубый и неэффективный рабочий процесс. Я также мог бы придумать какую-то абстрактную оболочку, которая расширяет/реализует библиотеку vertx json, но передает все функции до gson, но это также кажется большой работой.
Есть ли хороший способ добиться более удобной и удобной сериализации с помощью vertx?