从POJO到vertx.io的JsonObject的优雅映射?
我目前正在开发一个 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或一些具有注释支持的类似库来处理加载对象以操作代码中的数据,然后使用Gson和Vertx的序列化和非序列化函数在格式之间进行转换,但这是一个非常粗糙且低效的工作流程。我也可以想出某种抽象包装器来扩展/实现vertx json库,但将所有功能传递给gson,但这似乎也有很多工作要做。(vertx to load data -> json string -> gson to parse json into pojos -> make changes -> serialize to json string -> parse with vertx and save)
有没有好的方法可以使用vertx实现更友好和可维护的序列化?