gpt4 book ai didi

java - 从 POJO 到 vertx.io 的 JsonObject 的优雅映射?

转载 作者:太空狗 更新时间:2023-10-29 22:31:42 25 4
gpt4 key购买 nike

我目前正在研究 vertx.io应用程序并希望使用提供的 mongo api 进行数据存储。我目前在现有的 JsonObject 类之上有一个相当笨拙的抽象,其中所有 getset 方法都被替换为如下内容:

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实现更友好和可维护的序列化?

最佳答案

我刚刚向 Vert.x 提交了一个补丁,它定义了两个新的便利函数,用于在 JsonObject 和 Java 对象实例之间进行转换,而不会因为通过中间 JSON 字符串表示而导致效率低下。这将在版本 3.4 中。

// Create a JsonObject from the fields of a Java object.
// Faster than calling `new JsonObject(Json.encode(obj))`.
public static JsonObject mapFrom(Object obj)

// Instantiate a Java object from a JsonObject.
// Faster than calling `Json.decodeValue(Json.encode(jsonObject), type)`.
public <T> T mapTo(Class<T> type)

这在内部使用 ObjectMapper#convertValue(...),请参阅 Tim Putnam 的回答以了解有关此方法的注意事项。密码是here .

关于java - 从 POJO 到 vertx.io 的 JsonObject 的优雅映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32042938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com