В настоящее время я работаю над приложением vertx.io и хочу использовать API Mongo для хранения данных. В настоящее время у меня есть довольно неуклюжая абстракция поверх стандартных классов 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 или другую подобную библиотеку с поддержкой аннотаций для обработки загрузки объекта в целях управления данными в моем коде, а затем использовать функции сериализации и десериализации как 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?