使用Jackson

时间:2016-04-18 10:30:26

标签: java json serialization jackson vert.x

我在开发中使用 vertx Jackson 。在我的一个课程中,我得到了JsonObject类型的字段,如下所示:

class User
  private String name;
  private JsonObject details;

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

JsonObject details = new JsonObject().put("name", "value").put("another", "another")

这个方法允许我存储代码中任何结构的细节。至于我不需要在后端操作这些数据,我不想为它创建一个特殊的结构。
一切正常,直到我尝试使用 Jackson 序列化JsonObject。不幸的是,杰克逊没有使用美丽的JSON字符串,而是将map对象序列化为所有地图的附加字段。

如何使用杰克逊序列化 vertx JsonObject

3 个答案:

答案 0 :(得分:1)

查看JsonObject's javadoc,我看到了getMap()方法。我知道杰克逊能够轻松地序列化地图。

答案 1 :(得分:0)

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

JsonObject user = new JsonObject(Json.encode(new User());

它运作正常。

答案 2 :(得分:0)

我建议使用https://static.javadoc.io/com.fasterxml.jackson.core/jackson-databind/2.7.3/com/fasterxml/jackson/databind/ObjectMapper.html#convertValue(java.lang.Object,%20java.lang.Class)这样创建: new JsonObject((Map)Json.mapper.convertValue(new User(), Map.class)); 转换为String需要时间。