Java 使用Jackson序列化Vertex JsonObject
我在开发中使用了vertx和Jackson。在我的一个类中,我得到了一个类型为Java 使用Jackson序列化Vertex JsonObject,java,json,serialization,jackson,vert.x,Java,Json,Serialization,Jackson,Vert.x,我在开发中使用了vertx和Jackson。在我的一个类中,我得到了一个类型为JsonObject的字段,如下所示: class User private String name; private JsonObject details; JsonObject details = new JsonObject().put("name", "value").put("another", "another") 此详细信息字段可以包含其他JSONObject或JSONArray,例如: {“
JsonObject
的字段,如下所示:
class User
private String name;
private JsonObject details;
JsonObject details = new JsonObject().put("name", "value").put("another", "another")
此详细信息字段可以包含其他JSONObject或JSONArray,例如:
{“细节”:[{“街道”:“百老汇”},{“建筑”:20}]}
我没有这种结构的专用类,因为没有固定的结构,而且它可以变化。
详细信息对象的创建方式如下:
class User
private String name;
private JsonObject details;
JsonObject details = new JsonObject().put("name", "value").put("another", "another")
这个方法允许我在代码中存储任何结构的细节。因为我不需要在后端操作这些数据,所以我不想为其创建特殊的结构。在我尝试使用Jackson序列化这个
JsonObject
之前,一切都正常。不幸的是,Jackson没有给我漂亮的JSON字符串,而是给了我用所有map的附加字段序列化的map
对象
如何使用Jackson对vertx的
JsonObject
进行序列化?看,我看到了一个方法。我知道Jackson能够轻松地序列化地图 最后,事实证明,vertx已经有了自己的序列化程序实现。
只要使用他们的类来执行序列化(将使用Jackson undercover)就足够了
而且效果很好。我建议使用以下方法创建:
新的JsonObject((Map)Json.mapper.convertValue(new User(),Map.class));
转换字符串需要时间。您可以使用Jackson的JsonNode而不是JsonObject。不幸的是,我需要
JsonObject
。有很多代码依赖于它。这看起来效率很低:将用户对象序列化为JSON,然后反序列化(当调用JsonObject构造函数时),然后重新序列化(一旦序列化JsonObject以通过网络发送)。要从User
转到JsonObject
,而不使用中间字符串,请使用