将 JsonObject 映射到类字段的最佳方法

4 json jackson vert.x java-11

我在用:

import io.vertx.core.json.JsonObject;
Run Code Online (Sandbox Code Playgroud)

假设我们有一堂课:

class Foo {
  public String barStar;
  public boolean myBool;
}
Run Code Online (Sandbox Code Playgroud)

然后我们有一个像这样的 JsonObject:

var o = new JsonObject(`{"bar_star":"yes","my_bool":true}`);
Run Code Online (Sandbox Code Playgroud)

是否有一些内置机制可以将 JsonObject 映射到类中的匹配字段?我正在考虑某种地图实例,如下所示:

Foo f = o.mapTo(Foo.class, Map.of("bar_star","barStar","my_bool","myBool");
Run Code Online (Sandbox Code Playgroud)

所以你会传入一个映射实例,这会告诉 JsonObject 如何映射字段?可以以某种方式展示如何执行此操作的示例吗?我特别询问如何在反序列化到类之前映射字段。

f.l*_*ris 6

Vert.x 有一个mapTo方法(参见此处)。您已经拥有JsonObject.

在幕后,Jackson 用于映射,因此您可以简单地使用@JsonProperty("...")来覆盖属性的映射。

您的示例如下所示:

class Foo {
  @JsonProperty("bar_start")
  public String barStar;
  @JsonProperty("my_bool")
  public boolean myBool;
}

JsonObject obj = new JsonObject(`{"bar_star":"yes","my_bool":true}`);
Foo foo = obj.mapTo(Foo.class);
Run Code Online (Sandbox Code Playgroud)