使用 Jackson 序列化 vertx JsonObject

Whi*_*gel 5 java serialization json jackson vert.x

我在开发中使用vertxJackson 。在我的一堂课中,我得到了一个 type 字段JsonObject,如下所示:

class User
  private String name;
  private JsonObject details;
Run Code Online (Sandbox Code Playgroud)

详细信息字段可以包含其他 JsonObjects 或 JsonArrays,例如: {"details": [{"street": "Broadway"}, {"building": 20}]}
我没有此结构的专用类,因为没有固定的结构并且它可以变化。
详细信息对象的创建方式如下:

JsonObject details = new JsonObject().put("name", "value").put("another", "another")
Run Code Online (Sandbox Code Playgroud)

这种方法允许我在代码中存储任何结构的详细信息。由于我不需要在后端操作这些数据,所以我不想为其创建特殊的结构。
一切正常,直到我尝试JsonObject使用Jackson对其进行序列化。不幸的是,Jackson 没有给我提供漂亮的 JSON 字符串,而是map使用所有映射的附加字段序列化了对象。

如何使用Jackson序列JsonObjectvertx ?

Whi*_*gel 0

最后,事实证明vertx已经有了自己的 Serializer 实现。只需使用他们的类来执行序列化就足够了(这将使用杰克逊卧底)。

JsonObject user = new JsonObject(Json.encode(new User());
Run Code Online (Sandbox Code Playgroud)

而且效果很好。

  • 要从“User”到“JsonObject”而不需要中间字符串,请使用 [JsonObject.mapFrom](http://vertx.io/docs/apidocs/io/vertx/core/json/JsonObject.html#mapFrom-java. lang.Object-) (8认同)